编辑:
正如@jcalz所提到的,该示例本身是错误的,因为如果在子组件上定义了任何State
,则初始化是错误的。
作为忽略它的一种方法,可以使用as
键作为@sychd提及,但请记住此示例实际上是一个错误
我正在努力用打字稿初始化状态
所以我有一个状态可变的组件,即该组件具有状态,但是子级也可以定义(额外)状态。
这带来了尝试仅用其知道的部分初始化父状态的问题。
这段代码可以解释问题
interface Default {
something: boolean
}
class A<State> {
state: State & Default = {
something: false
}
}
因此,在上面我们看到state
抱怨Default
类型不能分配给Default & State
有什么办法解决这个问题吗?
答案 0 :(得分:1)
关于您的代码-诀窍是as State & Default
,因为TS将{something: false}
视为某个对象。但是
class A<State> {
state: State & Default = {
something: false
} as State & Default;
}
可以。 另外,可能会满足您的需求,您可以尝试可扩展的泛型:
interface Default {
something: boolean
}
interface State extends Default {
something: boolean,
}
class A<T extends Default> {
state: T = {
something: false
} as T;
}