use*_*663 7 javascript typescript angular
我的Angular 4项目中有一个错误,我在其中声明了一个变量:
debounce: 300;
Run Code Online (Sandbox Code Playgroud)
代替
debounce = 300;
Run Code Online (Sandbox Code Playgroud)
所以当然this.debounce在修复之前是未定义的.
在这种情况下,打字机不应该给我一个错误吗?
Fen*_*ton 17
如果声明具有类型注释的变量300,则表示不仅类型为数字,而且只有值300可接受:
var debounce: 300;
Run Code Online (Sandbox Code Playgroud)
如果您尝试分配200,则会出现错误:
debounce = 200;
Run Code Online (Sandbox Code Playgroud)
启用严格的空检查,编译器将捕获此类问题(您要分配值,而不是类型注释):
var debounce: 200;
// Strict null checks tells you here that you have done something strange
var x = debounce;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,当您尝试使用该变量时,严格的空检查指出您从未分配过一个值 - 从而告诉您您进行了注释,而不是赋值.
您基本上可以将(几乎)任何值作为值类型传递给Typescript.所以,如果你说:
class SomeClass {
debounce: 300 | 500 | 700;
constructor() {
this.debounce = 400;
}
}
Run Code Online (Sandbox Code Playgroud)
你会得到一个类型错误,因为打字稿期望去抖动的值是300,500或者700不是任何数字.这意味着您可以更具体地了解类型注释.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |