Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript未强制执行或检查返回类型_Typescript - Fatal编程技术网

Typescript未强制执行或检查返回类型

Typescript未强制执行或检查返回类型,typescript,Typescript,我们的代码中的一个bug最终是由以下原因引起的。方法的输出与0进行比较,并返回false。该方法显式声明数字返回类型,但允许返回字符串。我会在编译器和lint之间的某个时刻将其标记为错误,但不会被捕获 比较: if(routerIdParameter() === 0) { console.log('They match'); } else { console.log('They do not match'); } 方法: public routerIdParameter(): numb

我们的代码中的一个bug最终是由以下原因引起的。方法的输出与0进行比较,并返回false。该方法显式声明数字返回类型,但允许返回字符串。我会在编译器和lint之间的某个时刻将其标记为错误,但不会被捕获

比较:

if(routerIdParameter() === 0) {
  console.log('They match');
} else {
  console.log('They do not match');
}
方法:

public routerIdParameter(): number {
  if (this.route.snapshot.paramMap.has('id')) {
    return this.route.snapshot.params['id'];
  } else {
    return 0;
  }
}
显然,问题行是返回这个.route.snapshot.params['id']。params type是[key:string]:any,因此它无法知道类型,我假设类型检查会抱怨这个问题。 有一个简单的解决办法,就是在它前面加上+,但我更关心的是我在理解为什么允许它方面的差距

任何解释为什么会发生这种情况或如何使其出错都将不胜感激,因为我担心在我们的应用程序中可能会出现更多这种情况

在typescript 2.3.4中识别,但也在3.1.6中复制


此.route为ActivatedRoute类型。根据定义,从@angular/router导入的任何

可从任何类型分配,也可分配给任何类型。没有编译器设置使这更严格

在可能的情况下,您应该选择可从任何类型分配但不可分配到任何类型的
any
unknown
的更多信息(在typescript 3.0中介绍)


至于如何避免这种行为,我建议研究tslint规则,根据定义,任何
都可以从任何类型分配,也可以分配给任何类型。没有编译器设置使这更严格

在可能的情况下,您应该选择可从任何类型分配但不可分配到任何类型的
any
unknown
的更多信息(在typescript 3.0中介绍)


至于如何避免这种行为,我建议您研究一下tslint规则

谢谢您提供的信息。没有不安全的任何人标记了问题线(还有1119个问题!),所以我将使用这种方法。谢谢你提供的信息。没有不安全的任何人(连同1119个其他人)标记了问题线,所以我将使用这种方法。