方法声明中的typescript保护 接口初始化{ 进展:数目; } 变量isInitializing=(x:any):x正在初始化=>{ 返回x.progress的类型=='number'; }
上面的代码可以编译而没有任何错误 我的问题与代码中的“:x正在初始化”子句有关。似乎它不会影响生成的JavaScript “:x正在初始化”子句用于什么?进行什么类型的类型检查?当我使用任何参数调用函数“isInitializing”时,它似乎正在生成相同的代码。它生成相同的JS代码 非常感谢您的示例。这是一个很好的例子。它不生成任何代码,但是当函数与if语句一起使用时,编译器会自动将传入的对象视为在if代码中指定的类型子句。 下面是一个例子:方法声明中的typescript保护 接口初始化{ 进展:数目; } 变量isInitializing=(x:any):x正在初始化=>{ 返回x.progress的类型=='number'; },typescript,Typescript,上面的代码可以编译而没有任何错误 我的问题与代码中的“:x正在初始化”子句有关。似乎它不会影响生成的JavaScript “:x正在初始化”子句用于什么?进行什么类型的类型检查?当我使用任何参数调用函数“isInitializing”时,它似乎正在生成相同的代码。它生成相同的JS代码 非常感谢您的示例。这是一个很好的例子。它不生成任何代码,但是当函数与if语句一起使用时,编译器会自动将传入的对象视为在if代码中指定的类型子句。 下面是一个例子: interface Initializing {
interface Initializing {
progress: number;
}
var isInitializing = (x: any): x is Initializing => {
return typeof x.progress === 'number';
}
var obj = { progress: 1 };
// obj is type "{ progress: number; }" here
if (isInitializing(obj)) {
obj; // obj is type "Initializing" within this if statement
}
// obj is type "{ progress: number; }" here
这是一个好主意。它不生成任何代码,但是当函数与if语句一起使用时,编译器会自动将传入的对象视为在if代码中指定的类型子句。
下面是一个例子:
interface Initializing {
progress: number;
}
var isInitializing = (x: any): x is Initializing => {
return typeof x.progress === 'number';
}
var obj = { progress: 1 };
// obj is type "{ progress: number; }" here
if (isInitializing(obj)) {
obj; // obj is type "Initializing" within this if statement
}
// obj is type "{ progress: number; }" here