如何使用 TypeScript 中的方法动态扩展类?

Ale*_*ilo 3 javascript inheritance prototype typescript

如何使用 TypeScript 中的方法动态扩展类?有什么例子吗?我尝试:

UsersBlocksMyOrders.prototype.myFunc = function():any{
  alert('23434');
};
Run Code Online (Sandbox Code Playgroud)

但是编译器给了我一个错误。

Nit*_*mer 5

大多数情况下,您需要执行以下操作:

interface UsersBlocksMyOrders {
    myFunc(): any;
}
Run Code Online (Sandbox Code Playgroud)

否则编译器不知道它。


它甚至适用于现有的类。例如:

interface String {
    logit(): void;
}

String.prototype.logit = function () {
    console.log(this);
}

let a = "string";
a.logit();
Run Code Online (Sandbox Code Playgroud)

操场上的代码


因为您想在不同的模块中更改某些内容,称为Module Augmentation,您需要执行以下操作:

Import { UsersBlocksMyOrders } from "../pages/users/blocks/myorders";

declare module "../pages/users/blocks/myorders" {
    interface UsersBlocksMyOrders {
        logit(): void;
    }
}

UsersBlocksMyOrders.prototype.logit = function () { console.log(this); }
Run Code Online (Sandbox Code Playgroud)

只要有可能(这似乎适合您),直接编辑源代码。这样做应该只在需要的基础上进行。