我有一个将类作为参数的函数:
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] 删除。
我来说两句