在TypeScript中我可以做这样的事情
interface LoginInterface {
username: string;
password: string;
}
const MyObject = {
credentials: null as LoginInterface,
otherInfo: "I'm something not relevant to this question"
}
基本上我已经定义了一个接口LoginInterface
然后我创建了一个变量MyObject
,它是一个具有许多属性的对象(在这种情况下只有两个),其中一个属性credentials
需要默认值为null
,但我想声明它是LoginInterface
类型,使用TypeScript非常简单,因为我可以使用关键字as
。我怎么能用Flow复制这个?
现在我知道我可以做这样的事情
const MyObject: {
credentials: LoginInterface,
otherInfo: string
} = {
credentials: null,
otherInfo: "I'm something not relevant to this question"
};
但是我不想为MyObject
定义类型我只想定义credentials
的属性MyObject
的类型,类似于我在TypeScript中实现这一点的方式?
答案 0 :(得分:2)
Flow肯定不会允许这样做,因为它不是类型安全的。使用Flow的一个重要原因是防止空指针错误。
要明确表示值为null
但可能为LoginInterface
,您需要告诉Flow该值的类型为?LoginInterface
},与null | LoginInterface
相同。
如果您真的无法使用命名类型执行此操作,则可以使用以下内容执行此操作:
const MyObject = {
credentials: (null: ?LoginInterface),
otherInfo: "I'm something not relevant to this question"
}
您需要括号,以便Flow可以将类型表达式与其余表达式分开。