function f1()
{
const v : string = String();
if(v) {alert("IF");} // OK
const b : boolean = v; // Type 'string' is not assignable to type 'boolean'.
if(b) {alert("BOOLEAN");}
}
f1();
现在我对这个问题的解决方案是双感叹号,但我闻到了麻烦或我错了:
const b : boolean = !!v; //OK
我正在将此base用作quid。
答案 0 :(得分:0)
这是类型安全的决定。您可以在if
中使用任何类型(或其他可能有条件的地方,例如while
或?:
),因为这在JS中有效,并且是常见的做法。
如果您明确声明类型为boolean
的变量,则意味着您希望将可能的值限制为true
或false
(以及undefined
和{{1} }(如果您不使用null
)。由于Typescript不执行任何运行时转换,因此如果允许您的分配,则strictNullChecks
将包含一个b
。当然,如果在条件条件中使用它,其工作原理相同,但是string
可能会产生意外结果。
使用双重取反(===
)将任何值的类型转换为boolean
在JS中很常见,并且很好用。