2016-09-29 41 views
0

我有一些像这样的代码:如何制作只能包含流中特定属性的类型?

/* @flow */ 

type Options = { 
    userdir?: string, 
} 

function foo(options: Options) { 
    return 'foo'; 
} 

foo({userDir: 'bar'}); 

我预计,流将在这里警告我,有我的选项类型没有财产userDir。但根据流程类型检查器,此代码完全正常。我如何制作只能在流程中具有某些特性的类型?

回答

3

在你的代码片段中,你声明了一个可选属性,所以Flow不会抱怨。

如果需要流量来告诉你有关丢失的财产,你需要删除的问号:

type Options = { 
    userdir: string; 
}; 

如果你需要进行定义的属性,也允许它为空或未定义,您可以使用“也许类型”:

type Options = { 
    userdir: ?string; 
}; 

编辑:我们讨论这个上Reactiflux,原来流量(截至0.32)刚刚添加确切类型S:

type Options = {| 
    userdir: ?string; 
|}; 

使用此语法,呼吁foo({userDir: 'bar'});流量会抱怨userDir属性,它不会在上述定义存在时。

相关问题