Что делает ключевое слово `in` в машинописи? - PullRequest
0 голосов
/ 07 мая 2018

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

Редактировать: я имею в виду in, используемый в отображаемых типах, а не оператор js.

1 Ответ

0 голосов
/ 07 мая 2018

Это стандартный in оператор Javsacript. Вы можете прочитать больше документации здесь , но краткий рассказ

Оператор in возвращает true, если указанное свойство находится в указанном объекте. Синтаксис:

propNameOrNumber in objectName

где propNameOrNumber - строковое или числовое выражение, представляющее имя свойства или индекс массива, а objectName - имя объекта.

В Typescript оператор in также действует как охрана типов, как описано здесь

interface A {
  x: number;
}
interface B {
  y: string;
}

let q: A | B = ...;
if ('x' in q) {
  // q: A
} else {
  // q: B
}

Редактировать

Альтернативное значение in в машинописи - в определении сопоставленного типа. Вы можете прочитать о них в справочнике или в запросе . Ключевое слово in используется там как часть синтаксиса для перебора всех элементов в объединении ключей.

interface Person {
    name: string;
    age: number;
}
type Partial<T> = {
    [P in keyof T]?: T[P]; // P will be each key of T
}
type PersonPartial = Partial<Person>; // same as { name?: string;  age?: number; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...