Flow在第二个if语句中为str
提供了未覆盖的代码警告。
[流量覆盖]未覆盖的代码
(参数)str:never
[流量]
str:空
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
}
是因为如果typeof str === 'string'
为真,str instanceof String
始终为真,但反转并不总是正确的吗?
答案 0 :(得分:2)
欢迎使用JavaScript对字符串的定义。在你的控制台中试试这个:
String
基本上,在JavaScript中,常规字符串实际上不是string
个实例(就像它们在Java中一样),而是字符串原语。因为在你的函数中你明确地将参数声明为str instanceof String
(基元),所以第一个条件总是为真,因此第二个条件是死代码。如果你切换它们,sudo yum install 'pkgconfig(pango)'
将始终为假,所以第二个条件仍然有效。