允许函数接受Flow中的数组或字符串

时间:2016-08-02 18:36:54

标签: javascript flowtype

我有一个可以接受数组或字符串的函数:

/* @flow */
type Product = Array<string> | string

function printProducts(product: Product) {
    if (product.constructor === 'array') {
        product.map(p => console.log(p))
    } else {
        console.log(product)
    }
}

Flow抱怨“在字符串中找不到属性Map”。如何更改我的类型定义以满足此要求?

1 个答案:

答案 0 :(得分:3)

使用支持的dynamic type tests之一,在本例中为Array.isArray

/* @flow */
type Product = Array<string> | string

function printProducts(product: Product) {
    if (Array.isArray(product)) {
        product.map(p => console.log(p))
    } else {
        console.log(product)
    }
}