在c#中,您可以执行#if DEBUG...在调试时做一些特殊的事情。我想在Typescript中做类似的事情,这样我就可以在测试时设置表单值。
有人对如何在Typescript中实现这一点有什么建议吗?
我想出的最好的是一个设置类:
export class Settings {
static isDebugging = false;
};
然后,当启动应用程序时,我将其设置为true。
然后在代码中,我导入类并检查它是否为真。
if (Settings.isDebugging)...
看起来工作正常。
发布于 2015-10-02 22:22:47
如果您想从C#获得类似于#if
指令的东西,那么您必须在构建应用程序时剥离某些代码。
要做到这一点,您可以使用一些构建插件。有一些构建插件(参见here和here)可以在构建时剥离注释中的代码:
/* test-code */
removeMeInProduction();
/* end-test-code */
但是,通过使用这些插件,您可能会在拼写test-code
或end-test-code
时出错,从而导致您将测试代码留在生产环境中。你不会得到关于它的编译错误。
正因为如此,最好是找到一个构建插件,它可以根据函数的名称对其进行拆分(请参阅here-unfortunately I‘t find a gulp )。这样你就可以写出类似这样的代码:
function ifNotProduction(func: () => void) {
func();
}
然后使用它:
ifNotProduction(() => {
console.log("Only run when test.");
});
然后告诉构建脚本,当它不是生产构建时,去掉该函数的使用。
不过,总的来说,只需检查布尔值的简单解决方案就足够了。
发布于 2015-10-02 19:57:33
发布于 2015-10-05 09:04:30
有一些代码在TypeScript中添加了对预处理器指令的支持:https://github.com/Microsoft/TypeScript/issues/4691
然而,它是否会成为TypeScript本身的一部分还在讨论中。在此之前,解决办法主要是使用外部构建工具,或不同的配置选项(在编译时剥离代码)和魔法变量(仅在运行时禁用代码路径)
https://stackoverflow.com/questions/32906097
复制相似问题