簡體   English   中英

TypeScript導入混亂-很難做到

[英]TypeScript Import Confusion - It Can't Be This Hard

我已經開始使用TypeScript了兩年了。 我無論如何都不是專家,但是我花了一些時間在生態系統中:使用VS2015和節點工具,使用VSCode,以及在命令行使用tsc和鍵入(也被VSCode使用)。

我一直在努力嘗試用正確的方法在我編寫的代碼中獲得靜態類型和自動完成等功能。

我有一個維護的倉庫(EasyNodeQ),這是我TypeScript體驗的開始,我使用/// reference和DefinitelyTyped將其存儲到一個易於管理的地方。 但是任何時候我試圖在另一個項目中使用它時,我都會遇到問題。

事情變得更好一點 ,當我開始使用分型(而非下載* .d.ts文件我自己),特別是與環境標志。

但是我在嘗試在其他項目中使用該程序包時仍然遇到很多問題。 根據我采用的方法,我會得到很多重復標識符,或者找不到模塊或...

范圍從Node定義到我在兩個地方都使用的包(例如node-uuid)。

我要了解的是:我如何構造EasyNodeQ,以便在我進行工作時,既可以得到TypeScript的靜態類型輸入好處,又可以將其無縫地包含在其他項目中,然后還可以得到這些好處?

那有意義嗎?

基本用例是:npm安裝軟件包並獲取其類型,使用my EasyNodeQ軟件包並獲取其類型,在使用EasyNodeQ和其他軟件包的新項目中進行工作,並輕松管理這些類型。

最好以VSCode或命令行方式...

這是與ES6和最新版本的TypeScript一起使用的(盡管與ES5配合使用的答案會很好-只是不需要)。

我希望這是有道理的。 我四處張望,無法拼湊出有效的答案。

更新

我不敢相信我已經按照“正確”的方式進行了操作,但是它現在可以正常工作了,所以我認為我會發布我所做的各種事情(通常按照我認為它們很重要但不具有包容性的順序,因為我可能忘了一些)。

  • 我沒有npm'd依賴包(easynodeq),只是在package.json中使用了git url-所以我創建了一個正確的npm包,現在從npm安裝該包
  • 我沒有嘗試將Bus.ts用作代碼和定義,而是將Bus.js用作npm的“肉”,並構建了Bus.d.ts文件(也在npm中)
  • 擁抱類型,盡可能使用非環境定義,並從DefinitelyTyped下載環境定義(通過git)和其余的“-環境”定義混合使用(因為我仍然對區別感到困惑)。 最終,環境定義占大多數:node,express,serve-static,express-serve-static-core,mime,amqplib,而與bluebird和node-uuid相比,即使其中大多數是通過“類型搜索”找到的...“ 難道我做錯了什么?
  • 修改后的package.json也可以進行“類型安裝”
  • 清理git倉庫

今天有幾種方法可以使這項工作。 如您所述,使用Typings可以處理其NPM軟件包中未包含的定義。 對於這種情況,您可以使用package.jsontypings字段,它將與節點模塊解析一起使用。 將它們組合在一起時,您可以發布同時使用typings.json和依賴打包類型的程序包-盡管現在這迫使您的使用者使用Typings來安裝定義。 但是,這些都不能與“環境”定義一起使用,因為它們無法正確命名空間。

這可能很有用: https : //github.com/typings/typings/blob/master/docs/faq.md#should-i-use-the-typings-field-in-packagejson 我還使用了兩個工作流程,也有很多示例: https : //github.com/blakeembrey/change-case/blob/master/package.json#L6一直使用節點模塊解析,而https:// github。 com / blakeembrey / popsicle / blob / master / typings.json ,它改用Typings。 僅可能使用Typings,因為它可以為您創建命名空間的環境模塊,但它們不會沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM