假设我有一个代码块,我希望它只出现(或运行)在一个staging环境中,我在该环境中设置了一个环境变量(比如ENV ="staging"),那么TypeScript是否有办法在编译期间访问该变量?
示例:if (Environment['ENV'] == 'staging') console.log('testing');
在上面的环境中,哪个代码会编译成(冗余但有效的)if ('staging' == 'staging') ...
?
假设我有一个代码块,我希望它只出现(或运行)在一个staging环境中,我在该环境中设置了一个环境变量(比如ENV ="staging"),那么TypeScript是否有办法在编译期间访问该变量?
示例:if (Environment['ENV'] == 'staging') console.log('testing');
在上面的环境中,哪个代码会编译成(冗余但有效的)if ('staging' == 'staging') ...
?
3条答案
按热度按时间0g0grzrc1#
不,这不可能。
如果您的TypeScript文件在Node中运行,您可以使用
process.env
,因为它是一个常规的Node API-但在这种情况下,环境变量是在运行时由您的编译文件访问的,而不是在编译时由TypeScript访问的。如果你的TypeScript文件在浏览器中运行,那么就没有
process.env
,所以你甚至不能在运行时访问它。你可以在编译时用use a tool like Webpack把编译文件中对process.env
变量的引用替换成它们各自的值--但这仍然不是TypeScript所做的。所以很不幸答案是否定的:TypeScript无法做到这一点,您必须使用其他东西(如Webpack,甚至只是一个搜索和替换)将环境变量注入脚本。
ar7v8xwq2#
TypeScript是否有办法在编译期间访问变量
是的。更喜欢使用
process.env
,它在节点中 * 按原样 * 工作,并且可以使用--define与webpack一起使用。更多
显示如何将其用于生成输出切换的示例:https://basarat.gitbooks.io/typescript/content/docs/tips/build-toggles.html
nfg76nw03#
它在节点中工作。
使用
.env
创建文件。在其中键入Staging = "staging"
在您服务器/应用程序中将其称为:
在您代码中,可以像这样使用它: