Модуль 13 · Урок 49
TypeScript compiler model, inference і strict config
TypeScript перевіряє JavaScript contracts до запуску, але типи стираються з emitted code. Compile-time success не валідовує external JSON і не гарантує runtime behavior.
Де тип потрібний
const title = 'BookFlow'; // inferred string
function summarize(books: readonly Book[]): string {
return `Книг: ${books.length}`;
}Inference достатня для очевидного local initializer і contextual callback. Annotation корисна на parameter/return/public boundary. Використовуйте lowercase primitives, T[]/Array<T>, tuple лише для fixed positions; не перетворюйте кожне local value на verbose annotation.
Strict project contract
| Option | Evidence |
|---|---|
strict | Family строгих checks |
noImplicitAny | Невідомий parameter не стає silent any |
strictNullChecks | null/undefined мають власні types |
| target/module | Runtime і module output contract |
Фіксуйте TypeScript/Node versions і clean check/build. Diagnostic має code, source line, cause, fix і retest; assertion не є виправленням лише тому, що прибрала red underline.
Практика
Заповніть inference/annotation register і compiler diagnostics; виконайте strict check/build, потім запустіть emitted JS як окремий runtime gate.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.