如何忽略TypeScript中的一行但将其复制到JS?

时间:2016-04-13 15:25:13

标签: typescript

我正在尝试编写使用现有JS库的TypeScript代码。问题是这个库提供了一个工具include(),用于在运行时根据" path"加载JS类。传递给include()

  

var LibraryClass = include(' path-to-class');

但是TypeScript需要在编译时对这些类的定义...我可以通过在.ts中注释整个include行(和var LibraryClass)并通常提供类定义来编译我的代码TypeScript方式,通过/// <reference path="someFile.ts"/>或通过为此库创建.d.ts环境定义文件。

但我无法弄清楚如何忽略.ts中的include()次来电,但要将它们保留在最终的.js中......

可能在.ts和.js中有不同的变量名吗?例如,如果可以的话,

  

var LibraryClassTS = include(&#39; path-to-class&#39;);

在TypeScript中,但不知何故,将其编译为

  

var LibraryClass = include(&#39; path-to-class&#39;);

如果JavaScript,那将解决我的问题:我会在.ts中有一个空的LibraryClassTS类(而{。1}}接口定义是从.d.ts加载的)和运行时{{ 1}}加载.js。

3 个答案:

答案 0 :(得分:4)

如果这是您使用include的唯一地方,请将其放在该文件的顶部:

declare var include: any;

如果您在整个应用程序中使用它更多,请考虑将其移至.d.ts文件

但是如果你在多个项目中使用它,也许你应该考虑为它创建一个更完整的规范并将其提交给明确类型的repo。

答案 1 :(得分:1)

以下是我在.ts中抑制include()行但在.js中允许它的行为:

1)在TypeScript代码中,使用include()对每个////行进行评论,以便TypeScript将其视为注释(并将此“注释”复制到.js)。

2)制作了一个后处理器脚本,用于查找匹配/^(\s*\/{4}).+=\s*\binclude\b\s*\(.*\)/正则表达式的行的.js文件(具有.ts对应文件)并删除////

3)将此脚本连接到IntelliJ / WebStorm中的File Watchers插件,以便在每次TypeScript构建后自动调用它。

答案 2 :(得分:-1)

这可以帮助您查看:/// TS_IGNORE 让a:string = 1:)

相关问题