打字稿转译器输出 - 有没有办法从转译的代码中去除无法访问的代码? 必要时包括使用 compileAPI

问题描述

假设我想在模块文件中包含测试代码,但我不想将测试代码转录到 js 输出中。一个玩具示例 -

class C {
  num:number
  constructor(num:number){this.num=num}
}

const testMode = false
if (testMode) {
   async function test(){
      const c = new C(1)
      if (c.num!==1) throw ''
   }
   test()
   .then(()=>{console.log('PASS'};})
   .catch(e=>{console.log('FAIL'); process.exitCode=1;})

}

Typescript 将在转录的 js 输出中包含无法访问的代码。 然而,这并不是因为 typecipt 不知道什么是不可访问的。它作为设计选择输出 - 在某些情况下可能有合理的理由。但是,用户故意选择忽略无法访问的代码并没有错。

事实上,打字稿可以给出无法访问代码的警告, 并使编辑器可以在较暗的测试中显示无法访问的代码(正如您将在 vscode 中看到的那样)。

甚至在打字稿中定义了这些诊断消息

        Remove_unreachable_code: Diagnosticmessage;
        Remove_all_unreachable_code: Diagnosticmessage;

大概是为了允许用户以交互方式删除无法访问的代码,尽管我在实践中从未见过该功能

但是,我在编译器 API 中找不到任何内容可以轻松识别 ts.sourceFile 对象中无法访问的代码

编辑器如何知道什么是不可达的?

是否已经有一种现有的方法可以消除无法访问的代码? (我可以想象它已经作为一个转换模块存在。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)