npm 包的可安装 typescript 类型定义
Posted
技术标签:
【中文标题】npm 包的可安装 typescript 类型定义【英文标题】:Installable typescript type definitions for an npm package 【发布时间】:2018-08-24 08:55:10 【问题描述】:打字是 Typescript 的最佳功能之一,我发现它非常有用,可以在整个 javascript 项目中采用它,但是没有记录使用和最佳实践的效率,这给开发人员带来了很多困惑。
例如,我的 npm 包名为 my-awesome-pkg
,对于这个包,我们有兴趣使用 @typings,用户可以使用 npm npm install @types/my-awesome-pkg
安装它
我知道如何在tsconfig.json
中使用include
或files
在您的项目中包含和使用@typings:
"include": [ "< path to your typing file>" ]
但这不是我想要的,我很想知道如何为我的项目创建可安装的@typings,这样用户就不会因为寻找我的 npm 包的类型而感到沮丧,因为假设有这样做的标准做法。
谢谢,
【问题讨论】:
如果您为自己的包编写定义,最好将它们与您的包捆绑在一起,而不是贡献给@types。见the relevant section at DefinitelyTyped。 【参考方案1】:因此,如果您的项目是用 TypeScript 编写的,您只需在项目的 tsconfig.json
中设置以下标志:
"declaration": true,
"declarationDir": './anyFolderYouLike'
这将在 tsc
运行时为您的 TypeScript 项目生成类型。有关如何配置tsc
的更多信息,请参阅here。
许多人在DefinitelyTyped 上托管他们的类型。这样一来,您应该能够按照您希望的方式安装类型。
不过,我看到越来越多的人使用自己的包来交付他们的类型。这样就无需单独安装它们。如果你想这样做,你应该在package.json
中指定类型位置,即:
"types": "./lib/index.d.ts"
有关发布的更多总体信息,请参阅TypeScript publishing documentation。
【讨论】:
感谢您提供详细信息,您是对的,最好在项目中包含类型,我也会这样做。 为了让你的包的 ts 调用者在编辑器中看到你的类型定义,他们必须使用语法import myAwesomePkg = require('my-awesome-pkg')
而不是 commonJS 语法 let myAwesomePkg = require('my-awesome-pkg')
。以上是关于npm 包的可安装 typescript 类型定义的主要内容,如果未能解决你的问题,请参考以下文章