2017-03-09 51 views
1

我已经建立,我想作为一个工作的JavaScript /打字稿库:由于包名称中的连字符而引起的TypeScript错误混淆?

  • 无论从JavaScript和打字稿
  • 无论从JavaScript和打字稿调用时通过RequireJS访问的
  • 叫当一个全局变量具有完整的单元测试覆盖范围

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

我的问题是,我无法在所有情况下都能正常工作,我的感觉是包名称中的连字符(即typed-contract)是罪魁祸首。一些例子:

  • 在打字稿,\代码\ TypedContract.Specs \ Contract.TypeScript.requireJS.spec.ts
    • 如果我使用进口合同{}的 “类型化合同”然后我单元测试失败,但WebStorm转译器说它是正确的。
    • 如果我使用进口合同{}从 “typedcontract”然后我的单元测试通过,但transpiler说错误:(4,26)TS2306:文件“C:/Projects/TypedContract/Code/typedcontract.d。 ts'不是一个模块。
  • 我有一个外部NodeJS应用程序来测试这个。在这种情况下:
    • 如果我使用进口合同{}从“typedcontract”它按预期工作
    • 如果我使用进口合同{}从“typedcontract”它不会加载因为它无法在node_modules下找到NPM软件包。

我开始想我需要弃用此包,并开始一个新的没有连字符,除非有人能提供一些线索,以什么可怎么回事,因为我的“节目通过置换” ISN没有工作。

回答

0

好吧,在多次尝试失败后,我创建了一个新包,并弃用旧包。它现在可以在:

https://www.npmjs.com/package/typedcontract

我只是无法在连字符的所有场景中使用它,所以这看起来像是最好的长期解决方案。

0

I'm starting to think I need to deprecate this package and start a new one without a hyphen

  • 我应该用-工作。
  • 不要相信WebStorm太多。 TSC应该是你的唯一真理来源。

then my unit tests fail

也许你的单元测试是错误的呢。