将ES6模块改造为现有的TypeScript项目

时间:2016-04-12 06:27:29

标签: javascript module typescript ecmascript-6

我有一个TypeScript项目,我在一年前开始工具/语言/库处于选择模块系统令人困惑和冒险的阶段 - 所以我没有选择。

我使用tsd为外部库提取.d.ts文件,编译器很高兴。我偶尔使用/// <reference src=""来获取我自己的文件而没有其他任何东西(没有模块系统)。

我让TypeScript编译器创建一个单独的输出JavaScript文件,我从网页引用,前面是对外部库的引用(依赖顺序)。

一切都很好。

我现在转换为(通过TypeScript)转换为CommonJS的ES6模块。我也没有引用托管我的JavaScript结果的网页中的依赖项,但是将使用browserify将所有内容捆绑在一起。

最后,问题是:我如何确保在编译时中TypeScript编译器警告缺少引用外部代码的import语句?

在当前代码中,由于我使用tsd(很快typings)所有声明文件都包含在源代码树中,编译器会看到它们并且很高兴。但是,输出中没有require d(我还没有为外部代码添加import语句),如果我自己没有在最终HTML中包含依赖项(我不想要再做一次,我希望browserify为我捆绑所有东西),代码将不起作用,而且我必须运行它以查看它不起作用(TypeScript的全部意义是捕获尽可能多的错误正如我在编译时所做的那样,而不是在运行代码时。)

当我使用import语法时,编译工作并且require在JavaScript中发出,但如果存在TypeScript定义文件(我有点期待)编译器要查看node_modules,但由于只有JavaScript存在,我猜它不能真正知道哪些符号已被导出。)

为了让编译器告诉我需要为外部代码添加import的位置,我尝试删除tsd生成的输入,这会对我引用外部的所有地方产生错误依赖关系,但如果我继续删除打字,我就不能再编译了(不是没有错误)。

我知道这听起来像“有蛋糕,也吃它”的情景,但我有一种感觉,我错过了一些明显的东西。

如果有的话,最好的方法是什么?或者我应该继续我的“删除打字,盲目地输入import,只要有编译错误,然后放回打字并祈祷事情在运行时工作”?

0 个答案:

没有答案