gpt4 book ai didi

typescript - 从模块声明文件中的命名空间合并接口(interface)

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:14 30 4
gpt4 key购买 nike

我有一个 javascript 库,这里有一个类型定义文件:https://github.com/tyranid-org/tyranid/blob/master/tyranid.d.ts这是通过我的 package.json 文件中的 typings 属性公开的。

定义文件的基本版本:

export default Tyr;

declare namespace Tyr {
interface Document {
$save(): Promise<Document>;
}
}

我想在一个完全独立的 typescript 库中扩展Document 接口(interface):https://github.com/CrossLead/tyranid-gracl它通过向文档界面添加 $newMethod() 方法来导入 tyranid 及其类型。这能做到吗?

我在第二个 repo 的单独声明文件中尝试了以下内容,但它不起作用:

import Tyr from 'tyranid';

declare namespace Tyr {

interface Document {
$newMethod(): number;
}

}

如有必要,我可以修改这两个声明——很可能我没有正确编写 tyranid 的原始类型定义文件。谢谢!

最佳答案

以下结束了工作......

node_modules/tyranid/tyranid.d.ts 中:

export = Tyr // must do "import * as Tyr from 'tyranid'" instead of default

declare namespace Tyr {
export interface Document {
// original definition...
}
}

mylib/tyranid-extensions.d.ts...

declare module "tyranid" {
interface Document {
addedMethod(): boolean;
}
}

感谢@pelle-jacobs 的帮助!

关于typescript - 从模块声明文件中的命名空间合并接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39185728/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com