匿名类类型的打字稿参数

尤库莱莱

我有一个将类作为参数的函数:

function extendClass(cls = class {}) {
  return class extends cls {
    constructor () {
      super();
      console.log("I extend " + cls.name);
    }
  };
}

我想删除参数的默认值cls并使其成为必需值。

参数应该cls什么类型

斯科维

这是根据TypeScript 2.2 发行说明中提到的混合类支持修改您提供的代码的示例

type Constructor<T> = new (...args: any[]) => T;

function extendClass<Class extends Constructor<{}>>(cls: Class) {
    return class extends cls {
        constructor(...args: any[]) {
            super(...args);
            console.log("I extend " + cls.name);
        }
    };
}

// Valid example:
class Test {
    constructor() { }
}

const ExtendedClass = extendClass(Test)
new ExtendedClass()

// Invalid examples:
extendClass("a")
extendClass(1)
extendClass({})

打字稿游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章