我已经建立了一个JavaScript / TypeScript库,我想将其用作:


从JavaScript和TypeScript调用时的全局变量
从JavaScript和TypeScript调用时,通过RequireJS访问
具有完整的单元测试范围


这是使用Webpack打包的UMD,并在此处(https://www.npmjs.com/~typed-contract)作为NPM软件包进行部署。如果您需要我正在处理的分支的全部来源,可以在https://github.com/randarp/typed-contract/tree/feature/Issue_5.1中找到它。

我的问题是我无法在所有情况下都可以使用它,我的感觉是软件包名称(即,typed-contract)中的连字符是罪魁祸首。一些例子:


在TypeScript中,\ Code \ TypedContract.Specs \ Contract.TypeScript.requireJS.spec.ts


如果我使用“ typed-contract”中的import {contract},那么我的单元测试将失败,但是WebStorm编译器说这是正确的。
如果我使用来自“ typedcontract”的import {contract},则我的单元测试通过了,但是编译器说错误:(4,26)TS2306:File'C:/Projects/TypedContract/Code/typedcontract.d.ts'不是模块。

我有一个外部NodeJS应用程序对此进行测试。在这种情况下:


如果我从'typed-contract'使用import {contract},它会按预期工作
如果我使用来自'typedcontract'的import {contract},将不会加载应用程序,因为它无法在node_modules下找到NPM软件包。



我开始认为我需要弃用此程序包,并开始一个不带连字符的新程序包,除非有人可以提供一些线索,因为我的“通过置换编程”无法正常工作。

最佳答案

我开始认为我需要弃用此软件包并开始一个不带连字符的新软件包



我应该使用-
不要太信任WebStorm。 TSC应该是您唯一的真理来源。



  然后我的单元测试失败


也许您的单元测试是错误的。

关于javascript - 包名称中的连字符引起的TypeScript错误令人困惑?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42685501/

10-14 17:31