【发布时间】:2017-01-04 22:39:14
【问题描述】:
Flow 预测多态的方式真的让我很头疼。 Here's a minimum example 来证明我遇到的麻烦。
我预计以下内容会基于 myPolymorphicAction.payload.key 的类型不正确而引发错误。相反,action 不是多态类型令人窒息。
Flow 能在这里分辨出来吗?
/* @flow */
type normalAction = {
type: string,
payload?: any,
}
type polymorphicAction <P: *> = {
type: string,
payload: P,
}
type action = polymorphicAction<*> | normalAction;
const myAction: action = {
type: "Hello",
payload: { key: "World" }
};
const myPolymorphicAction: action<myActionPayloadType> = {
type: "Hello",
payload: { key: "World" }
}
type myActionPayloadType = {
key: number
}
// FLOW OUTPUT //
20: const myPolymorphicAction: action<myActionPayloadType> = {
^ object literal. Expected polymorphic type instead of
20: const myPolymorphicAction: action<myActionPayloadType> = {
^ type `action`
【问题讨论】:
标签: javascript reactjs polymorphism flowtype