簡體   English   中英

如何基於參數字符串定義返回類型? Flowtype JavaScript

[英]How to define a type of return based on an argument string? Flowtype javascript

例如,我得到這個fn:

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 我想強制執行以下操作:當類型為a ,返回值始終為Car類型,而當類型bBike

這可能嗎?

很接近的東西:

// @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');

謝謝

我找到了一種方法來處理此代碼。 正在重載該函數,然后將自變量用作對象來定義返回值。 是可以的解決方案,但可能會更好。

注意: formatNotification的參數只能是一個對象,而不能是2個參數,例如formatNotification(type, data)

仍然不是一個很好的解決方案,但是已經成功了一半。

在此處輸入圖片說明

以及類型:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM