gpt4 book ai didi

javascript - 在 typescript 中向现有类添加方法?

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

我在一个 angular 2 cli 项目中工作,我必须在其中创建一个插件的定义,因为它不存在它的类型。这个插件依赖于一个主库,这个库已经有自己的类型并且可以工作。

无论如何,我有两个文件主要的是

图书馆类型文件 A

export class A extends B {
constructor(...);
methodX(): void;
}

而且我需要为我的插件添加一个新方法,这样我的类就会像

export class A extends B {
constructor(...);
methodX(): void;
methodY(): void;
}

关键是我需要将它添加到一个单独的文件中。问题是在不创建新类的情况下向现有类添加方法

如果我放

插件类型文件 B

export class A extends B {
constructor(...);
methodX(): void;
}

插件类型文件 B

export class A extends B {
constructor(...);
methodX(): void;
methodY(): void;
}

它不起作用,有没有人可以实现覆盖类或使用新方法扩展它?

谢谢

最佳答案

TypeScript 文档中的“声明合并 > 模块扩充”部分似乎提供了解决方案:

https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation

在您的情况下,如果 class A 是从 file1.ts 导出的,并且您想将 methodY() 添加到该类中一个不同的模块 file2.ts,然后试试这个:

//// file1.ts
export class A extends B {
constructor(...);
methodX(): void;
}

//// file2.ts
import { A } from "./file1";
declare module "./file1" {
interface A {
methodY(): void;
}
}
A.prototype.methodY = function() {}

关于javascript - 在 typescript 中向现有类添加方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999765/

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