Typescript 在另一个包上使用类型声明

Typescript 在另一个包上使用类型声明,typescript,definitelytyped,Typescript,Definitelytyped,我已经建立了一个私有的NPM注册中心,它托管一个公共可用包的分支(该包的许可证允许) 源包有一个DefinitelyTyped项目提供的类型声明 目前,在我的项目中,如果我写: 从'@private/mypackage'导入mypackage' DefinitelyTyped(@types/mypackage)提供的类型将不适用,我将得到错误: 错误TS7016:找不到模块“@private/mypackage”的声明文件node_modules/@private/mypackage/inde

我已经建立了一个私有的NPM注册中心,它托管一个公共可用包的分支(该包的许可证允许)

源包有一个DefinitelyTyped项目提供的类型声明

目前,在我的项目中,如果我写:

从'@private/mypackage'导入mypackage'
DefinitelyTyped(
@types/mypackage
)提供的类型将不适用,我将得到错误:

错误TS7016:找不到模块“@private/mypackage”的声明文件node_modules/@private/mypackage/index.js”隐式具有“any”类型


在我的项目中,是否可以重新声明fork的源包类型,以便上面的示例能够正常工作?

您可以为模块添加声明文件(
.d.ts
):

declare module '@private/mypackage'
{
    import m from 'mypackage';

    export default m;
}

谢谢我试图导入“@types/mypackage”而不是“mypackage”重要提示:使用此解决方案,我必须同时安装
mypackage
@private/mypackage
,否则我无法从
mypackage
导入。有没有一种方法可以使用类型声明而不必安装两个版本的软件包?@GnxR:不需要安装软件包本身,您只需要
@types
软件包。如果不是这样,您可能没有使用声明文件,或者您的构建工具出错。只需使用
tsc
我就可以编译它,而无需安装软件包本身。