不能使用尖括号语法在打字稿中进行类型转换

时间:2017-12-31 03:10:19

标签: typescript

好的,我们走了:

this.currentRecID被定义为数字。

鉴于此,在代码中的某些时候,您必须检查:

if  (this.currentRecID === '0' ) {} 

但是,由于我理解的原因,打字稿不允许你if (this.currentRecID === '0' ) {}; this.currentRecID的变量类型是数字,因此可以理解它不能容忍' 0'拉屎。

然后你考虑部署类型断言 - 因为你期望它在这种情况下很方便。考虑到这一点,你就是这样;

  if ( <string>this.currentRecID === '0'  ) {}

但是很快就会被这条可爱的消息所阻止:

[ts] Type 'number' cannot be converted to type 'string'.

出于什么方式?你怎么会得到this.currentRecID真的&#39; 0&#39 ;?

1 个答案:

答案 0 :(得分:1)

如果您需要确保变量是一个字符串或数字,通常是这样做的

if (typeof this.currentRecID === 'number') {
 // this.currentRecID would be of type number inside this block
}

但是看起来你不是在监视用户输入或者休息api或类似的东西,否则类型号的变量如何变成字符串?在类成员上检查var类型尤其奇怪。任何不受信任的数据来源都应事先以某种方式进行验证