2016-08-02 15 views
1

einen Array oder eine Zeichenfolge im Flow zu akzeptieren, habe ich eine Funktion, die ein Array oder eine Zeichenfolge annehmen kann:eine Funktion erlaube

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

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

Fluss beschwert „Eigenschaft Map nicht gefunden in String“. Wie kann ich meine Typdefinition ändern, um dies zu erfüllen?

Antwort

3

Verwenden eines der unterstützten dynamic type tests, in diesem Fall 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) 
    } 
}