为什么在这个对象类型交集的结果中,`constructor` 属性 的类型与 `Function` 相交?
Why, in the result of this object type intersection, is the type of the `constructor` property intersected with `Function`?
如果我执行这种类型的交集:
{ constructor: 'FooConstructor', value1: boolean } & { value2: number };
结果类型是这样的:
{ constructor: 'FooConstructor' & Function, value1: boolean, value2: number };
为什么生成的 constructor
属性 的类型与 Function
相交?
这是因为:
- 类型
{ constructor: 'FooConstructor', value1: boolean } & { value2: number }
是 object
的子类型,因为每个对象类型都是。
- 类型
object['constructor']
是 Function
。
那是因为 Javascript do 中的对象有一个名为 constructor
的 属性,它指的是用于构造它们的函数:
> let obj = {};
> obj.constructor
ƒ Object() { [native code] }
我建议使用 属性 名称,例如 constructor_
或 constructorName
,因为 constructor
是指实际的构造函数。
如果我执行这种类型的交集:
{ constructor: 'FooConstructor', value1: boolean } & { value2: number };
结果类型是这样的:
{ constructor: 'FooConstructor' & Function, value1: boolean, value2: number };
为什么生成的 constructor
属性 的类型与 Function
相交?
这是因为:
- 类型
{ constructor: 'FooConstructor', value1: boolean } & { value2: number }
是object
的子类型,因为每个对象类型都是。 - 类型
object['constructor']
是Function
。
那是因为 Javascript do 中的对象有一个名为 constructor
的 属性,它指的是用于构造它们的函数:
> let obj = {};
> obj.constructor
ƒ Object() { [native code] }
我建议使用 属性 名称,例如 constructor_
或 constructorName
,因为 constructor
是指实际的构造函数。