为什么打字稿要求我解决设置布尔类型的值?

时间:2018-10-10 07:22:14

标签: typescript type-conversion boolean

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。

1 个答案:

答案 0 :(得分:0)

这是类型安全的决定。您可以在if中使用任何类型(或其他可能有条件的地方,例如while?:),因为这在JS中有效,并且是常见的做法。

如果您明确声明类型为boolean的变量,则意味着您希望将可能的值限制为truefalse(以及undefined和{{1} }(如果您不使用null)。由于Typescript不执行任何运行时转换,因此如果允许您的分配,则strictNullChecks将包含一个b。当然,如果在条件条件中使用它,其工作原理相同,但是string可能会产生意外结果。

使用双重取反(===)将任何值的类型转换为boolean在JS中很常见,并且很好用。