gpt4 book ai didi

javascript - 为什么flow在使用instanceof时会给出uncovered code warning?

转载 作者:行者123 更新时间:2023-11-30 11:18:39 25 4
gpt4 key购买 nike

Flow 在第二个 if 语句中为 str 给出未覆盖代码警告。

[flow coverage] uncovered code
(parameter) str: never
[Flow]
str: empty

const isStr = (str: string): boolean=> {
if(typeof str === 'string')
return true;
if(str instanceof String)
return true
return false
}

但是如果 if 语句被反转,它不会给出任何警告。

const isStr = (str: string): boolean=> {
if(str instanceof String)
return true
if(typeof str === 'string')
return true;
return false
}

是不是因为如果str instanceof String为真,typeof str === 'string'总是为真,但是反过来不总是对的?

最佳答案

欢迎使用 JavaScript 的字符串定义。在您的控制台中试试这个:

var str = 'foo';
typeof str;
// result: "string"

str instanceof String;
// result: false

var Str = new String('bar');
typeof Str;
// result: "object"

Str instanceof String;
// result: true

基本上,在 JavaScript 中,常规字符串实际上不是 String 实例(就像它们在 Java 中一样),而是字符串基元。由于在您的函数中您显式地将参数声明为 string(原语),因此第一个条件将始终为真,因此第二个条件是死代码。如果切换它们,str instanceof String 将始终为 false,因此第二个条件仍然有效。

关于javascript - 为什么flow在使用instanceof时会给出uncovered code warning?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50625109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com