簡體   English   中英

如何在Flowtype中將返回值定義為truthy?

[英]How can I define return value as truthy in Flowtype?

有了這樣的函數的返回值將始終是truthy,沒必要true ,並沒有必要的any 有沒有辦法定義這個函數的返回值是truthy嗎?

function cleanTruthy (value: any) {
  if (!value) return true
  return value
}

看來這可以通過在單獨的模塊聲明中重載方法來實現。 以下工作(我不確定是否可能沒有模塊聲明):

/* @flow */

declare function cleanTruthy(V: false | 0 | null | typeof undefined | ""): true;
declare function cleanTruthy<V: any>(v: V): V;


const truthy: 1 = cleanTruthy(1);
const falsy: true = cleanTruthy(false);

這是一個工作版本

但是,類型多態通常不是最好的方法,每次更改模塊文件時都必須重新編譯流。

一個更好的方法可能是創建一個這樣的函數,它返回一個基於真實性邏輯的實體布爾值:

function isTruthy(v: any): boolean {
  return !!v;
}

if(isTruthy(v)) {
  // do something
}

暫無
暫無

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

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