问题描述
假设我想在模块文件中包含测试代码,但我不想将测试代码转录到 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 (将#修改为@)