Почему в результате пересечения типа объекта тип свойства `constructor` пересекается с` Function`? - PullRequest
0 голосов
/ 11 февраля 2020

Если я выполняю пересечение этого типа:

{ constructor: 'FooConstructor', value1: boolean } & { value2: number };

В результате получается такой тип:

{ constructor: 'FooConstructor' & Function, value1: boolean, value2: number };

( Пример игровой площадки )

Почему тип результирующего свойства constructor пересекается с Function?

1 Ответ

0 голосов
/ 11 февраля 2020

Это потому, что:

  • Тип { constructor: 'FooConstructor', value1: boolean } & { value2: number } является подтипом object, поскольку каждый тип объекта имеет вид.
  • Тип object['constructor'] равен Function .

И это потому, что объекты в Javascript do имеют свойство с именем constructor, которое ссылается на функцию, используемую для их построения:

> let obj = {};
> obj.constructor
ƒ Object() { [native code] }

Я предлагаю вместо этого использовать имя свойства, например constructor_ или constructorName, поскольку constructor предназначено для ссылки на фактический конструктор.

...