PhpStorm intellisense 不适用于通过 NPM 分发的 TypeScript 代码
PhpStorm intellisense not working for TypeScript code distributed via NPM
我有两个 NPM 模块,我们称它们为 A 和 B。
都是用 TypeScript 写的。两者都编译成 CommonJS Node-like 模块。
模块 B 依赖于模块 A,所以我使用 npm install --save A
安装。它已正确安装到 node_modules/A
文件夹中。
然后在我的新模块 B 中,我想使用模块 A 中的 class Class
。所以我写:
// import Class from 'A/lib/Class'; <- This import statement must be suggested by PhpStorm
export default class NewClass extends Class {
// boring implementation details
}
问题是PhpStorm(版本2016.3.2)不建议像对本地项目文件那样添加任何导入语句。 TypeScript 服务表示未找到 class 名称,PhpStorm 仅建议重命名 class Class
.
有没有可能让 PhpStorm 给我建议,用 TypeScript 编写并通过 NPM 分发的模块的代码完成?
我认为 TypeScript 模块的数量会随着时间的推移而增加,并且在 TypeScript 项目中直接从模块使用 TypeScript 代码要容易得多,而无需 .d.ts 文件。
我找到了解决方案。
如果您想通过 NPM 分发 TypeScript 模块并具有 IDE 智能感知的优势,您需要在 tsconfig
文件中将 compilerOptions.declaration
设置为 true
。这会说 TS 编译器为每个 .ts
文件生成 d.ts
定义。在依赖模块中 IDE 会正确地建议您导入文件,因为某些类型未在您的代码中解析。
我有两个 NPM 模块,我们称它们为 A 和 B。
都是用 TypeScript 写的。两者都编译成 CommonJS Node-like 模块。
模块 B 依赖于模块 A,所以我使用 npm install --save A
安装。它已正确安装到 node_modules/A
文件夹中。
然后在我的新模块 B 中,我想使用模块 A 中的 class Class
。所以我写:
// import Class from 'A/lib/Class'; <- This import statement must be suggested by PhpStorm
export default class NewClass extends Class {
// boring implementation details
}
问题是PhpStorm(版本2016.3.2)不建议像对本地项目文件那样添加任何导入语句。 TypeScript 服务表示未找到 class 名称,PhpStorm 仅建议重命名 class Class
.
有没有可能让 PhpStorm 给我建议,用 TypeScript 编写并通过 NPM 分发的模块的代码完成?
我认为 TypeScript 模块的数量会随着时间的推移而增加,并且在 TypeScript 项目中直接从模块使用 TypeScript 代码要容易得多,而无需 .d.ts 文件。
我找到了解决方案。
如果您想通过 NPM 分发 TypeScript 模块并具有 IDE 智能感知的优势,您需要在 tsconfig
文件中将 compilerOptions.declaration
设置为 true
。这会说 TS 编译器为每个 .ts
文件生成 d.ts
定义。在依赖模块中 IDE 会正确地建议您导入文件,因为某些类型未在您的代码中解析。