TypeScript · Middle · Запитання 26 з 75

Як TypeScript обробляє оператор in під час звуження?

type Fish = { swim(): void };
type Bird = { fly(): void };
function move(a: Fish | Bird) {
  if ('swim' in a) a.swim(); else a.fly();
}

Пояснення

TS підтримує звуження через typeof, instanceof, in, перевірки на рівність, істинність і дискримінанти. В else лишиться Bird. Для даних із мережі такі перевірки - частина рантайм-валідації.

Де почитати

Помилка в запитанні

TypeScript · Middle · запитання 26

Перевірте себе

Пройдіть тест TypeScript · Middle: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест