我有一些像这样的代码:
/* @flow */
type Options = {
userdir?: string,
}
function foo(options: Options) {
return 'foo';
}
foo({userDir: 'bar'});
我预计流量会在此警告我,我的选项类型中没有属性userDir
。但根据流式检查器,这段代码完全没问题。如何制作只能在流程中具有某些属性的类型?
答案 0 :(得分:3)
在您的代码段中,您要声明一个可选属性,因此Flow不会抱怨。
如果您需要Flow告诉您缺少的属性,则需要删除问号:
type Options = {
userdir: string;
};
如果您需要定义该属性,但也允许它为null或未定义,则可以使用' maybe type' :
type Options = {
userdir: ?string;
};
编辑我们在Reactiflux上讨论了这个问题,结果显示Flow(截至0.32)刚刚添加了Exact类型:
type Options = {|
userdir: ?string;
|};
使用此语法,在调用foo({userDir: 'bar'});
时,Flow会抱怨userDir
属性,这在上面的定义中不存在。