2017-08-04 67 views
2

Heyho,打字稿:指定一個目錄來尋找模塊類型定義

我想用一些JavaScript庫在我的打字稿代碼其中有在NPM無分型。所以我自己寫了這些類型,並將它們放在我的源代碼樹的definitions目錄中。但是,我無法打印腳本來查看那些模塊的目錄。

我的目錄結構是這樣的:

+-node_modules 
| | 
| +-moduleA 
| | 
| +-moduleB 
| 
+-src 
| | 
| +-definitions 
| | | 
| | +-moduleA.d.ts 
| | | 
| | +-moduleB.d.ts 
| | 
| +-ts 
| | 
| + ... all typescript code ... 
| 
+-tsconfig.json 

我試過,包括在definitions -directory模塊使用

  • include
  • files
  • typeRoots
  • paths

但是沒有一個可行。

有人可以告訴我,如何讓打字稿包括這些類型?

PS:爲什麼TypeScript模塊處理如此複雜?

回答

2
{ 
    "compilerOptions": { 
    "typeRoots": [ 
     "./node_modules/@types", 
     "./some-custom-lib" 
    ] 
    } 
} 

的typeRoots串數組只是爲該。除了常規的「node_modules/@ type」之外,添加一個自定義的打字文件夾。

+0

只要我的模塊定義中沒有任何導入語句,這似乎工作。但沒有導入,我無法正確輸入模塊。 – jsf

+0

這不起作用,因爲'typeRoots'需要腳本格式而不是模塊格式。 – unional

+0

是否記錄在某處?我找不到這方面的信息。 – jsf

0

您可以使用triple-slash Directives來包含它們,以指示編譯器使用它們。

E.g.創建一個index.d.ts文件並將其放到您的定義文件夾中。在那裏你可以包括你所做的每個自定義輸入。它可能看起來像這樣

/// <reference path="react.patch.d.ts" /> 
/// <reference path="custom-typings.d.ts" /> 

裏面的分型文件的第一行必須是

/// <reference types="nameOfIt" /> 

然後在你的tsconfig.json將它們包含在files領域如

"files": [ 
    "definitions/index.d.ts" 
    ]