我不知道如何讓流程來處理許多類型的聯合參數。流量類型:處理函數的參數,可能是多種類型
示例代碼:
// @flow
function foo(a: string | number[] | Date): string {
if (typeof a === 'string') {
return a.toUpperCase()
} else if (a instanceof Array) {
return a.join('-')
} else if (a instanceof Date) {
return a.getMonth().toString()
}
return ''
}
流量錯誤:
6: } else if (a instanceof Array) {
^Array. This type is incompatible with
3: function foo(a: string | number[] | Date): string {
^union: string | array type | Date
流量似乎當我使用typeof
,但事實並非總是不夠好,因爲typeof []
和typeof new Date()
注意都是"object"
。
如何使流量在這裏給我一個綠色的檢查?
是否看起來像一個bug,但FYI它正常工作與'Array.isArray',你基本上總是要使用,而不是'的instanceof Array'。 – loganfsmyth
因爲你定義了默認情況''return'',所以你對'foo'的類型安全性似乎並不特別自信。 – ftor
@ftor流似乎並沒有意識到這些都是三個選項要麼,所以沒有這種gauranteed'回報「」'你'字符串:這種類型是不符合的隱式返回undefined.' –