我正在用TypeScript编写一个库,我想同时以Node和Browser为目标。现在我运行了tsc
两次,使用了两个不同的目标。这部分工作正常。
然而,我的代码中有一小部分是特定于目标的。我需要能够做如下事情:
if(BUILD_TARGET === 'node') {
// do something
} else {
// do something else
}
有没有什么方法可以在编译时注入这些常量,这样它们就可以由tsc
本身优化掉,或者通过UglifyJS(或类似的工具)优化掉?
2条答案
按热度按时间i34xakig1#
typescript中最接近编译时常量的是
const enums
-根据文档,“与常规枚举不同,它们在编译时被完全删除”。然而,这是有代价的--最大的警告是const枚举与捆绑商经常使用的
isolatedModules = true
模式不兼容。此外,Typescript不会做死代码消除,你将不得不使用一些其他的工具来删除
if (0 === 1)
分支之后。您将需要两个不同的
tsconfig.json
文件,每个文件将包含一个对相同枚举类型具有不同定义的文件。tsconfig.浏览器.json
目标枚举浏览器.d.ts
tsconfig.Node.json
目标枚举节点.d.ts
t.ts
使用
tsc --project tsconfig.browser.json
编译使用
tsc --project tsconfig.node.json
编译uubf1zoe2#
https://github.com/Morglod/tsts
目前正在开发编译时间转换器
到