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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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_Typeguards - Fatal编程技术网

Typescript 如何制作深型护卫?

Typescript 如何制作深型护卫?,typescript,typeguards,Typescript,Typeguards,我有以下类型: 类型子项={ foo:number |空 } 类型Parent={ child:child | null } 我想制作一个类型保护,它接收Parent作为参数,并确定foo是否是一个数字。。。比如: const-guard=(父:父):父?.child?.foo是数字=>{ 返回isNumber(父项?.子项?.foo) } 我希望TS现在能够推断出parent.child不为空-这可能吗?您必须将其拼写出来,例如: const-guard=(父:父):父是{child:{f

我有以下类型:

类型子项={
foo:number |空
}
类型Parent={
child:child | null
}
我想制作一个类型保护,它接收
Parent
作为参数,并确定
foo
是否是一个数字。。。比如:

const-guard=(父:父):父?.child?.foo是数字=>{
返回isNumber(父项?.子项?.foo)
}

我希望TS现在能够推断出
parent.child
不为空-这可能吗?

您必须将其拼写出来,例如:

const-guard=(父:父):父是{child:{foo:number}}=>{
返回isNumber(父项?.子项?.foo);
};
可以使用交叉点类型执行此操作,如下所示:

const-guard=(父:父):父是父&{child:child&{foo:number;};}=>{
返回isNumber(父项?.子项?.foo);
};
(始终可以为其定义类型,而不是内联交点。)