如何在用TypeScript编写的npm包中正确地包含带有模块扩充的声明文件?
我有一个npm包--如何在用TypeScript编写的npm包中正确地包含带有模块扩充的声明文件?,typescript,npm,Typescript,Npm,我有一个npm包--tyranid-gracl--用typescript编写,并扩展了另一个包:tyranid,用javascript编写,但没有扩展 在我使用的泰兰德格拉克中。此外,我在package.json的typings字段中公开了为tyranid-gracl生成的.d.ts文件,以便允许第三方typescript库为tyranid-gracl进行打字 问题:我如何将tyranid gracl制作的tyranid的模块扩展正确地公开给第三个库,该库通过npm安装tyranid gracl
tyranid-gracl
--用typescript编写,并扩展了另一个包:tyranid
,用javascript编写,但没有扩展
在我使用的泰兰德格拉克中。此外,我在package.json
的typings
字段中公开了为tyranid-gracl
生成的.d.ts
文件,以便允许第三方typescript库为tyranid-gracl
进行打字
问题:我如何将tyranid gracl
制作的tyranid
的模块扩展正确地公开给第三个库,该库通过npm安装tyranid gracl
问题的基本提炼
第一个库的类型定义文件tyranid
:
/**
* Type definitions for tyranid.js
*/
export = TyrStatic;
declare namespace TyrStatic {
// declare properties of Tyr object
export namespace Tyr {
interface Document {
$id: string;
}
}
}
第二个库的模块扩展,tyranid gracl
import { documentMethods as dm } from './tyranid/documentMethods';
declare module 'tyranid' {
namespace Tyr {
/**
* Add additional methods to Document interface
*/
interface Document {
$allow: typeof dm.$allow;
$deny: typeof dm.$deny;
}
}
}
我希望在开发人员通过npm安装tyranid gracl
时进行上述修改。目前,我在tyranid gracl
的index.d.ts
中引用了上述修改,但它似乎不起作用——特别是,添加的方法对类型系统不可见
希望这是有意义的——提前感谢 乍一看,您的Tyraid gracl
打字中是否缺少导出命名空间Tyr
。我认为对于扩展现有名称空间,扩展文件不会导出(或者它会覆盖?),至少对我来说是这样。