0
比如我得到這個FN:如何根據參數字符串定義返回類型?流動型的JavaScript
const aCar = {type: 'car', wheels: 4};
const aBike = {type: 'bike', wheels: 2};
const fn = (type:'a'|'b'):Car|Bike => {
if(type === `a`) return aCar;
if(type === `b`) return aBike;
}
的問題是,回總是Bike
或Car
indipendently的類型。我想強制執行的是,當類型爲a
時,返回總是爲Car
,當爲b
時,類型爲Bike
。
這可能嗎?
東西very close:
// @flow
const items = [1, 2, 3];
type FirstType = ((_: 'a') => number) & ((n: 'b') => Array<number>);
const first: FirstType = (n):any => {
if (n === "a") {
return items[0];
} else if(n === 'b') {
return items;
}
}
const a: number = first('a');
const b: Array<number> = first('b');
感謝
使用[泛型](https://flow.org/en/docs/types/generics/)? –
泛型僅在輸入與輸出類型相同時才起作用。在這種情況下,輸入是一個字符串「a」,輸出是一個對象。輸入和輸出之間的映射必須在'fn'中完成,而不是在父項中完成,因爲父項無法知道如何匹配。 –