2017-08-04 64 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" 
    ]