Присвоение типов машинописи с помощью интерфейсов в скобках, что означает скобка? - PullRequest
0 голосов
/ 05 января 2020

У меня есть эти 2 интерфейса

export interface Contact {
  first_name: string;
  last_name: string;
  emails?: (EmailsEntity)[] | null;
  company: string;
  job_title: string;
}
export interface EmailsEntity {
  email: string;
  label: string;
}

в чем смысл присваивать emails?: (EmailsEntity)[] | null; с EmailsEntity в скобках?

В чем разница с этим обозначением: emails?: EmailsEntity[] | null;?

Ответы [ 3 ]

1 голос
/ 05 января 2020

Это на самом деле ничего не значит. Синтаксически это похоже на:

emails?: EmailsEntity[] | null;

Использование скобок в этом случае не требуется. Это необходимо только тогда, когда речь идет об изменении приоритета операторов. Узнайте больше о приоритетах операторов , и вы можете понять полную картину.

0 голосов
/ 05 января 2020

Вот пример , где круглые скобки имеют значение:

type MyUnion1 = { a: string } | EmailsEntity & { c: boolean }
// {a: string; } | { email: string; label: string; c: boolean; }

type MyUnion2 = ({ a: string } | EmailsEntity) & { c: boolean }
//              ^                            ^ 
// { a: string; c: boolean; } | { email: string; label: string; c: boolean; }

Оператор & (пересечение) имеет более высокий приоритет, чем | (объединение). Скобки изменят приоритет.

0 голосов
/ 05 января 2020

Нет разницы между (EmailsEntity)[] и EmailsEntity[]. Typescript допускает (), поскольку при использовании некоторых операторов типа необходимо изменить приоритет операторов по умолчанию. Если () не является частью сигнатуры функции, они не имеют никакого другого значения в типах.

...