Typescript 使属性可选但不';t将值设置为未定义的并集

Typescript 使属性可选但不';t将值设置为未定义的并集,typescript,type-systems,Typescript,Type Systems,实用程序类型Partial不仅将类型的键设置为可选,还将它们的值设置为未定义的并集: type Obj = { foo: number } type PartialObj = Partial<Obj> // { foo?: number | undefined } type Obj={foo:number} 类型PartialObj=Partial/{foo?:number | undefined} 是否存在会导致:{foo?:number}简短回答的实用程序类型 是否存在会导致

实用程序类型
Partial
不仅将类型的键设置为可选,还将它们的值设置为未定义的并集:

type Obj = { foo: number }
type PartialObj = Partial<Obj> // { foo?: number | undefined }
type Obj={foo:number}
类型PartialObj=Partial/{foo?:number | undefined}
是否存在会导致:
{foo?:number}

简短回答的实用程序类型 是否存在会导致:
{foo?:number}
的实用程序类型

不存在该应用程序的实用程序类型

为什么??TypeScript将
{foo?:number}
{foo?:number |未定义}
视为相同的类型

一些探索 下面是VS代码中的悬停结果,这表明两种类型具有相同的结果

在某些方面,这是有意义的,因为不存在的属性等于
未定义的属性。这里,
obj1
没有
foo
属性,但是
foo
属性是
未定义的
的三倍

constobj1={};
常数obj2={
foo:未定义
};
console.log(obj1.foo==未定义);
console.log(obj2.foo==未定义)