2016-05-13 90 views

回答

9

TypeScript Handbook中有一個頁面爲NPM包添加類型。我會複製和粘貼在這裏:

分型爲NPM套餐

打字稿編譯器通過以下Node.js的模塊解析算法解析節點模塊名稱。 TypeScript還可以加載與npm包捆綁在一起的類型。編譯器將嘗試使用以下規則集來發現模塊「foo」的類型:

嘗試加載位於相應的包文件夾(node_modules/foo /)中的package.json文件。如果存在,請閱讀「類型」字段中描述的類型文件的路徑。例如,在下面的package.json,編譯器將解決在node_modules /富/ lib中/ foo.d.ts的分型

{ 
    "name": "foo", 
    "author": "Vandelay Industries", 
    "version": "1.0.0", 
    "main": "./lib/foo.js", 
    "typings": "./lib/foo.d.ts" 
} 

嘗試加載一個index.d.ts文件命名位於包文件夾(node_modules/foo /)中 - 此文件應包含包的類型。

模塊分辨率的精確算法可以在這裏找到。

你的定義文件應該

  • be.d.ts文件
  • 寫成外部模塊
  • 不包含三斜槓引用

的理由是該類型不應將新的可編譯項目帶入編譯文件集合;否則在編譯期間可能會覆蓋程序包中的實際實現文件。此外,加載類型不應該污染全球範圍通過從相同的庫的不同版本帶來可能衝突的條目。除非你的package.json使用types財產

+1

似乎它應該'類型'不''typings'。 –

+0

當我回答這個問題時,這是'typings'。這是[檔案](https://web.archive.org/web/20160412204540/https://www.typescriptlang.org/docs/handbook/typings-for-npm-packages.html)。另外,從當前的文檔:'請注意,「typings」字段與「types」同義,並且可以使用.' – rgvassar

+0

感謝您的背後故事。目前所有的例子都使用'types'。如果您還沒有,請考慮更新您的答案。 –

1

的Visual Studio 2015年將無法識別定義文件
https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

{ 
    "name": "awesome", 
    "author": "Vandelay Industries", 
    "version": "1.0.0", 
    "main": "./lib/main.js", 
    "types": "./lib/main.d.ts" 
} 

*您必須使用三個斜槓包括在TS參考路徑文件。
/// <reference path="../node_modules/../lib/main.d.ts" />

+0

從您提供的鏈接中獲得:'請注意,「類型」字段與「類型」同義,也可以使用。 – Izhaki