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保护 接口初始化{ 进展:数目; } 变量isInitializing=(x:any):x正在初始化=>{ 返回x.progress的类型=='number'; }_Typescript - Fatal编程技术网

方法声明中的typescript保护 接口初始化{ 进展:数目; } 变量isInitializing=(x:any):x正在初始化=>{ 返回x.progress的类型=='number'; }

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

上面的代码可以编译而没有任何错误

我的问题与代码中的“:x正在初始化”子句有关。似乎它不会影响生成的JavaScript

“:x正在初始化”子句用于什么?进行什么类型的类型检查?当我使用任何参数调用函数“isInitializing”时,它似乎正在生成相同的代码。它生成相同的JS代码

非常感谢您的示例。

这是一个很好的例子。它不生成任何代码,但是当函数与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
这是一个好主意。它不生成任何代码,但是当函数与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