带TypeScript注释的条带,无需其他转换(包括第3阶段的建议)并保留换行符

问题描述 投票:0回答:1

如何在不执行任何其他转换(包括诸如#foo之类的私有类字段)并且在我的原始代码中保留换行符的情况下,从TS 3.9模块中剥离所有TS类型和类型注释?

我正在为一个使用带有阶段3提案的纯JS的OSS项目做出贡献,但是我想在TypeScript中构建我的代码,并使用一个自动构建步骤来剥离所有TS注释,最后得到一个.mjs文件我可以在上游检查。

我的代码没有使用任何具有运行时占用空间的TS功能(例如,名称空间,枚举)。我只是使用TS进行类型检查。

到目前为止,我已经尝试过TSC和Babel,但是它们每个都有问题。

这里是TSC版本:

tsc src/lib/LocalDateTime.ts --lib ESNext --target ESNext --module ESNext --isolatedModules --declaration --allowSyntheticDefaultImports --moduleResolution node --useDefineForClassFields true
mv code.js code.mjs

TSC保留了我所有的代码,但保留了doesn't preserve newlines。如果在代码块之间没有行间距,那么生成的代码将更难以阅读,也不适合在上游进行检查。

TSC也弄糟了缩进,但是更漂亮的可以解决。我只需要保留换行符。我对尝试以自动方式添加换行符的TSC后格式化程序不感兴趣。我只想将原始换行符保留在原始代码中。

这里是一个Babel 7.10的配置,也已经可以使用了:

{
  "retainLines": true,
  "plugins": ["@babel/plugin-proposal-class-properties"],
  "presets": [
    [
      "@babel/preset-typescript",
      {
        "allowNamespaces": false,
        "onlyRemoveTypeImports": true
      }
    ]
  ]
}

该配置使我的换行符单独存在(很好!),但是它也转换了Stage 3 private class fields的用法,这很不好,因为我想在JS输出中保留本机#foo属性的语法。我只希望保留我的运行时代码,但删除TS部分。

如何?

typescript babel
1个回答
0
投票
在这种情况下,将@babel/plugin-proposal-class-properties更改为@babel/plugin-syntax-class-properties
© www.soinside.com 2019 - 2024. All rights reserved.