2017-03-09 23 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

也許你的單元測試是錯誤的呢。