FlowJS - 给出类型错误,因为它无法识别 `typeof` 语句的结果

瑞安·惠尔

以下代码导致错误:

type NextItem = string | { [string]: string };

const next: NextItem = 'foo';
const isString = typeof next === 'string';
const toName = isString ? next : Object.keys(next)[0];
                                 ^ string [1] is not an object.

但摆脱isString变量修复它:

type NextItem = string | { [string]: string };

const next: NextItem = 'foo';
const toName = typeof next === 'string' ? next : Object.keys(next)[0];

我明白为什么,但我希望有人可以提供更好的解决方案。我需要重用该isString变量,并希望保持我的代码 DRY 和 SIMPLE(易于阅读)。所以请不要“聪明”(hacky)解决方案。

登录

Flow 的改进通常基于使用时的直接检查,因此它只会将您的isString变量视为boolean没有特殊含义的变量

这给您留下了几个单独的选项:

  • 调整代码的控制流,以便有两个明确的分支,假设有更多的检查isString,您总是可以创建一个明确的分支来处理这两种情况。
  • 内联typeof next === 'string'支票。

    const toName = typeof next === 'string' ? next : Object.keys(next)[0];
    
  • 使用谓词函数来集中isString逻辑

    function isString(arg: mixed): boolean %checks {
       return typeof arg === "string"; 
    }
    
    const toName = isString(next) ? next : Object.keys(next)[0];
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

FlowJS 类型并使用 && 进行赋值

来自分类Dev

无法使用基于typeof对象的switch语句

来自分类Dev

FlowJS:如何使用联合类型和布尔文字

来自分类Dev

switch 语句返回错误结果

来自分类Dev

jQuery函数的Typeof错误

来自分类Dev

无法从typeof变量扩展

来自分类Dev

无法从typeof变量扩展

来自分类Dev

打字稿:与“ keyof接口”相比,“ keyof typeof值”产生不同的类型结果

来自分类Dev

sql语句未给出期望的结果

来自分类Dev

Break语句给出了意外结果

来自分类Dev

Typeof / instanceof类型别名

来自分类Dev

Javascript的“ typeof”何时可以返回错误的类型?

来自分类Dev

类型检查运算符语句的结果

来自分类Dev

如果FOR循环中的IF语句返回错误结果

来自分类Dev

IF语句导致函数结果错误

来自分类Dev

SQL:对返回错误结果的 CASE 语句求和

来自分类Dev

当数组必须为某种类型时,为什么flowjs不会在空数组上引发错误?

来自分类Dev

出现错误:对于扩展了A的类B,类型'typeof B'不能分配给类型'typeof A'

来自分类Dev

MySQL连接语句语法错误,无法对结果进行排序

来自分类Dev

React Hook-识别“ typeof”子组件

来自分类Dev

类型'typeof ...'不存在TypeScript'...'

来自分类Dev

TypeScript:转换类型'a | 基于typeof的b'至'a'

来自分类Dev

Typescript获取typeof接口或类型的子字段

来自分类Dev

JS中的typeof是什么类型

来自分类Dev

基于typeof参数值的返回类型

来自分类Dev

Typescript:返回typeof类的instance类型。

来自分类Dev

使用函数参数的typeof的条件类型

来自分类Dev

instanceof与typeof方法返回的对象类型矛盾

来自分类Dev

TypeScript-联合类型的typeof数组

Related 相关文章

热门标签

归档