有一个层次结构
class Thing { }
class BarView<Type> extends React.Component<{ obj: Type }, {}> { }
class FlossView extends BarView<Thing> { }
class Foo<Type> {
renderer?: new () => BarView<Type>
constructor(view?: new () => BarView<Type>) {
this.renderer = view
}
}
为什么我可以使用类名签名调用Foo
的构造函数,而不会出现这样的错误
let foo = new Foo<Thing>(FlossView)
...而以下代码产生错误?
let foo = new Foo<Thing>()
foo.renderer = FlossView
/* [ts]
Type 'typeof FlossView' is not assignable to type 'BarView<Thing> | undefined'.
Type 'typeof FlossView' is not assignable to type 'BarView<Thing>'.*/
如何获取课程的typeof FlossView
版本,而只是FlossView
?
答案 0 :(得分:0)
案件结案。签名无效,最基类React.Component
从未有过new () => React.Component
类型的构造函数。
数字,只有一个带有一个参数props
的构造函数。
因此renderer
属性的类型声明无效。它应该是
renderer?: new (props) => BarView<Type>