我正在使用TypeScript和React;我想扩展一个基本组件,然后有一个返回许多子类之一的函数。
例如:
class SuperComponent extends React.Component { }
class SubComponent extends SuperComponent { }
function get(): SuperComponent {
return SubComponent;
}
但是,TypeScript会引发以下错误:
错误TS2322:无法将类型'typeof SubComponent'分配给类型'SuperComponent'。 类型“子组件”的类型中缺少属性“ setState”。
似乎不是特定于React的,因为我可以很轻松地重现它:
class BaseClass {
myMethod() {}
}
class SuperClass extends BaseClass {}
class SubClass extends SuperClass {}
function get2(): SuperClass {
return SubClass;
}
错误TS2322:类型'typeof SubClass'无法分配给类型'SuperClass'。 类型“子类”的类型中缺少属性“ myMethod”。
这应该可行,对吧?我想念什么?
答案 0 :(得分:3)
您需要实际创建组件的实例:
class SuperComponent extends React.Component { }
class SubComponent extends SuperComponent { }
function get(): SuperComponent {
return new SubComponent({});
}
如果要返回组件的类型,则需要使用typeof SuperComponent
作为返回类型:
function get(): typeof SuperComponent {
return SubComponent;
}