【发布时间】:2016-12-22 15:45:26
【问题描述】:
根据this 文章 typescript 2.0 的分型系统已更改,因此现在不清楚如何附加自定义分型。我应该总是为此创建 NPM 包吗?
提前谢谢你!
【问题讨论】:
-
你的意思是模块扩充(即扩展模块)吗?
-
只是一个简单的事情,需要为“@type”系统未覆盖的外部JS代码提供声明(我无法通过npm发布这些类型,代码和接口都是私有的)
根据this 文章 typescript 2.0 的分型系统已更改,因此现在不清楚如何附加自定义分型。我应该总是为此创建 NPM 包吗?
提前谢谢你!
【问题讨论】:
您可以仅为您的项目创建本地自定义类型,您可以在其中为 JS 库声明类型。为此,您需要:
创建目录结构以保存您的类型声明文件,以便您的目录结构类似于以下内容:
.
├── custom_typings
│ └── some-js-lib
│ └── index.d.ts
└── tsconfig.json
在index.d.ts 文件中,为您的 JS 库添加声明:
declare module 'some-js-lib' {
export function hello(world: string): void
}
(可选:如果您有 TypeScript >= 4.x,则跳过) 在您的 tsconfig.json 的 compilerOptions 部分添加对此类型声明的引用:
{
"compilerOptions": {
...
"typeRoots": ["./node_modules/@types", "./custom_typings"]
},
...
}
在你的代码中使用声明的模块:
import { hello } from 'some-js-lib'
hello('world!')
【讨论】:
index.d.ts 或 declarations.d.ts 似乎可以在项目中的任何位置使用。
declare module ... 放入任何.d.ts 文件中。
node_modules/@types 回来。我已经更新了答案,谢谢!