我正在尝试向 PromiseLike<T>
的原型(prototype)添加一个方法
使用 String
这不是问题:
declare global {
interface String {
handle(): void;
}
}
String.prototype.handle = function() {
}
编译正常
但是,如果我尝试对
PromiseLike<T>
执行相同操作,则会收到编译错误 'PromiseLike' only refers to a type, but is being used as a value here.
:declare global {
interface PromiseLike<T> {
handle(): PromiseLike<T>;
}
}
PromiseLike.prototype.handle = function<T>(this: T):T {
return this;
}
显然这里的问题是
PromiseLike
是通用的。我怎样才能在 typescript 中正确地做到这一点? 最佳答案
接口(interface)在运行时不存在,它们在编译期间会被擦除,因此无法在接口(interface)上设置函数的值。您可能正在寻找的是将函数添加到 Promise
。您可以类似地执行此操作:
declare global {
interface Promise<T> {
handle(): Promise<T>;
}
}
Promise.prototype.handle = function<T>(this: Promise<T>): Promise<T> {
return this;
}
关于typescript - 如何在 typescript 中向泛型类的原型(prototype)添加方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52514013/