为什么函数本身在TypeScript中评估为true?

时间:2018-06-11 11:57:03

标签: typescript if-statement

我最近开始学习TypeScript。我想知道为什么以下建筑工作没有错误/警告用这种语言:

className

(并且实际上将运行代码的条件部分),而大多数程序员可能会承认它是一个拼写错误(缺少函数的调用括号)并以这种方式重写它:

<Grid item ... >

我的意思是,评估函数对象的真实原因是什么?或者更确切地说,它只是使代码更容易受到此类错误的影响?

[解决方案]为了避免这种错误,可以改变编码风格。在条件语句中,可以使用“===”严格的egality检查,在第一个示例中将导致“Operator'==='不能应用于类型'()=&gt; boolean'和'boolean'”TypeScript编译器错误。

1 个答案:

答案 0 :(得分:0)

  

评估函数对象是否存在真实的原因?

它允许您测试它们是否存在。

例如,JavaScript库可能具有插件,可选择允许实现功能。然后它可以测试一个插件是否实现了该函数,如果是,则使用它。

关于这是否是好的做法超出了这个答案的范围,但JavaScript允许它,所以TypeScript支持它。

有一种方法可以修改你的编码风格来检测这种类型的错误。

使用===将执行&#34; strict&#34;等式检查,它还将测试被比较的两个值的类型。 if( f === true )会导致类型不匹配错误&#34;运营商&#39; ===&#39;不能应用于类型&#39;()=&gt;布尔&#39;和&#39;布尔&#39;&#34;。