
Урок 03 · 10 хв
Об'єкти, optional, readonly
Форма об'єкта — основний контракт у застосунку.
Майже весь прикладний TS — опис об'єктів: які поля є, які можна не писати, які не можна перезаписати. Handbook розбирає це в Object Types. Нижче — те, на чому зазвичай спотикаються в робочому коді.
TypeScript структурний: важлива форма, а не ім'я типу. Якщо в значення є потрібні поля, воно підійде, навіть якщо тип називається інакше. Звідси й зайві поля у змінної — вони допустимі. Строга перевірка спрацьовує лише на свіжому літералі, щоб упіймати друкарську помилку на кшталт nme.
Зайві поля
Це не баг. Свіжий літерал перевіряють строго, щоб упіймати друкарські помилки. Об'єкт зі змінної може мати зайві поля — структурна типізація.
Для словника з відомим набором ключів краще Record<"ada" | "linus", number> або звичайний тип. Index signature надто широкий: будь-який рядковий ключ стане допустимим, і друкарська помилка в імені поля проскочить.
- Object Types — optional, readonly, index signature
- Excess Property Checks — чому літерал свариться, а змінна — ні
- MDN · optional chaining —
?.у JS і як на це спирається TS
Перевірка
Закріпи, поки не пішов далі
1. Як безпечно взяти optional поле?