【问题标题】:How do I include extra Typescript declarations when I publish my package to NPM?当我将包发布到 NPM 时,如何包含额外的 Typescript 声明?
【发布时间】:2016-10-30 18:31:09
【问题描述】:

我正在编写一个将在 NPM 上发布的 Typescript 包,我想包含一些自定义声明以及由 Typescript 编译器生成的主声明文件。但是,当我将我的包作为依赖项安装到另一个项目中时,Typescript 只能识别生成的声明文件,而不是我也希望包含在我的项目中的额外文件。

例如,假设我的包名为“my-package”:

//In typings/my-interface.d.ts

declare module "my-package/interfaces" {
    export interface MyInterface { ... }
} 

通过使用import { MyInterface } from "my-package/interfaces" 导入该声明,我可以毫无问题地在整个原始包中使用该声明。问题是当包作为依赖项安装在另一个项目中时,Typescript 找不到"my-package/interfaces"。它只知道"my-package",即使自定义声明包含在包中,即使它们是从编译的声明中引用的。

作为一个真实的示例,假设lodash 是用 Typescript 编写的,并且作者希望包含所有精选函数的声明以及主要的 lodash 声明文件:

declare module "lodash/some" {
    export function ...
}

declare module "lodash/forOwn" {
    export function ...
}

是否可以在 NPM 包中包含我的自定义声明并让 Typescript 将它们与编译的声明一起提取?

【问题讨论】:

    标签: typescript


    【解决方案1】:

    我能想到的最简单的方法是不要使用“d.ts”来命名您的自定义声明文件,而是将其保留为声明。

    例如,尝试将 my-interface.d.ts 重命名为 my-interface.ts。当你编译时,tsc 会为你生成my-interface.d.ts,你应该可以在上游使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2021-02-20
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多