Скомпилируйте машинописный текст без транспиляции асинхронных функций

Есть ли способ использовать компилятор TypeScript только для удаления аннотаций типов, но не для транспиляции асинхронных функций? Что-то вроде опции { target: 'esInfinite' }? Причина в том, что есть браузеры, которые уже поддерживают асинхронные функции, поэтому я хочу иметь цель сборки, в которой эти функции не затрагиваются.

пример ввода:

async function foo(a : number) : Promise<void> {}

пример вывода:

async function foo(a) {}

person Tamas Hegedus    schedule 07.10.2016    source источник
comment
Есть запрос на включение, чтобы добавить поддержку ES2017, но пока это не произойдет, не так далеко как я в курсе.   -  person Sean Vieira    schedule 07.10.2016


Ответы (2)


В tsconfig.json измените цель на ES2017, тогда она сохранит async/await.

{
  "compilerOptions": {
    .....
    "target": "ES2017",
    .....
  }
}

УБЕДИТЕСЬ, что ваша среда выполнения изначально поддерживает его!!!

PS: начиная с Apr 2018, AWS Lambda теперь поддерживает Nodejs 8. Вы сможете использовать для него указанную выше конфигурацию.

person LeOn - Han Li    schedule 30.04.2018

Эта функция уже запрашивалась здесь. Таргетинг на es2016 и es2017 должен быть доступен на этапе Сообщество и в TypeScript 2.1.

person Tamas Hegedus    schedule 17.10.2016
comment
Сейчас мы находимся на TypeScript 4.3, и установка цели на es2017 сохранит операторы async/await с использованием цели, а es2016 выведет полифилл с использованием var __awaiter. - person Benny Neugebauer; 07.04.2021