javascript - 如何在 Flowtype 中将返回值定义为 truthy?

标签 javascript boolean flowtype

使用这样的函数,返回值将始终为真值,不需要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);

Here is a working version .

但是,类型多态通常不是最好的方法,每次更改模块文件时,flow 都必须重新编译。

更好的方法可能是创建一个这样的函数,它根据真实性逻辑返回一个实体 boolean 值:

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

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

关于javascript - 如何在 Flowtype 中将返回值定义为 truthy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616688/

相关文章:

javascript - 匹配器函数 typeahead

javascript - 未捕获的类型错误 : Function. 原型(prototype)。应用 : Arguments list has wrong type (? )

c++ - 写入 vector < vector <bool>>

c++ - istream 会发生哪些隐式转换?

python - 识别包含百分位数 numpy 矩阵中列中位数的行

javascript - 流 clearTimeout 与 TimeoutID 不兼容

javascript - 流类型,转换为数组类型不适用于显式类型,但适用于隐式类型

javascript - 无法在 React Native 中发现我的语法错误?

axios - 流程(推断错误): Cannot call await with 'axios.get(...)' bound to 'p'

javascript - 如何在表单提交时重定向页面