Мне было любопытно, поэтому я пингнул Николо Рибаудо , который много работает над Babel, и оказалось, что это проще, чем я думал: вы можете сказать Babel parse typeаннотации, но не , удалите их, используя синтаксический плагин TypeScript (@babel/plugin-syntax-typescript
), но не пресет TypeScript (@babel/preset-typescript
).
Например, если вы хотите передать поддержку оператора конвейера, ваш .babelrc
может выглядеть следующим образом:
{
"plugins": [
"@babel/plugin-syntax-typescript",
[
"@babel/plugin-proposal-pipeline-operator",
{
"proposal": "minimal"
}
]
]
}
Тогда, если вы отправите Babel этот .ts
файл:
function doubleSay(str: string) {
return str + ", " + str;
}
function capitalize(str: string) {
return str[0].toUpperCase() + str.substring(1);
}
function exclaim(str: string) {
return str + '!';
}
let result = "hello"
|> doubleSay
|> capitalize
|> exclaim;
console.log(result);
... он генерирует этот вывод с конвейерным оператором конвейера, но аннотации типов все еще на месте:
var _ref, _ref2, _hello;
function doubleSay(str: string) {
return str + ", " + str;
}
function capitalize(str: string) {
return str[0].toUpperCase() + str.substring(1);
}
function exclaim(str: string) {
return str + '!';
}
let result = (_ref = (_ref2 = (_hello = "hello", doubleSay(_hello)), capitalize(_ref2)), exclaim(_ref));
console.log(result);