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_Types_Typescript Typings - Fatal编程技术网

TypeScript类型问题

TypeScript类型问题,typescript,types,typescript-typings,Typescript,Types,Typescript Typings,请看一下下面的TypeScript片段。 为什么这不会引发编译错误?这不是明显的类型错误吗?我必须更改什么才能使其再次成为安全类型?TYVM A型={ 从来没有, q?:部分 } B型={ p?:部分 问:从来没有 } C型=A|B 常数c:c={ p:{ 答:1,, b:2/这是一个不适用于包含并集和交集的嵌套类型的方法,人们期望的方式。过度的属性检查是类型系统的一种附加功能,只适用于对象文本,因此当它不适用时,事情会回到规则,其中类型{a:a,b:b}是的子类型{a:a},因此前一种类型的值

请看一下下面的TypeScript片段。 为什么这不会引发编译错误?这不是明显的类型错误吗?我必须更改什么才能使其再次成为安全类型?TYVM

A型

={ 从来没有, q?:部分

} B型

={ p?:部分 问:从来没有 } C型

=A

|B

常数c:c={ p:{ 答:1,,


b:2/这是一个不适用于包含并集和交集的嵌套类型的方法,人们期望的方式。过度的属性检查是类型系统的一种附加功能,只适用于对象文本,因此当它不适用时,事情会回到规则,其中类型
{a:a,b:b}
的子类型{a:a}
,因此前一种类型的值应该可以分配给后一种类型的变量。您可能希望转到并给它一个允许的值,因为类型
{a:number,b:number}
{a:number}兼容
。不,它错误地简化为:-,因此它与
部分
或空值无关。我设法将问题简化为以下情况:const c:{p:{a:number}}string={p:{a:1,b:2,//OK出于某种原因}}const d:{a:number}string={a:1,b:2,//现在检测到错误}基本上,当你创建嵌套对象时,类型推断会变得很奇怪。这不是我第一次看到类型推断的问题。当你将对象传递给函数时也会发生这种情况。@WayneC我反对它是重复的:与接口/继承/索引器无关。