我不知道如何获得流来处理多种类型联合的参数。
示例代码:
// @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"
,因此并不总是足够好。
如何让流程在这里给我一张绿色的支票?
答案 0 :(得分:0)
我刚刚尝试了您的示例并更改了if
s的顺序!
// @flow
function foo(a: string | number[] | Date): string {
if (typeof a === 'string') {
return a.toUpperCase()
} else if (a instanceof Date) {
return a.getMonth().toString()
} else if (a instanceof Array) {
return a.join('-')
}
return ''
}
没有错误。
不要问我为什么:)