我正在尝试向 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/

10-11 10:39