Флаги строгости
Включите строгий режим для более безопасного кода: strict, noImplicitAny, exactOptionalPropertyTypes, noUncheckedIndexedAccess.
«Флаги строгости» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.
Введение
Цель: включить и понять основные флаги строгой проверки. Эти параметры позволяют обнаруживать ошибки раньше и улучшают подсказки в IDE.
- strict
- noImplicitAny
- exactOptionalPropertyTypes
- noUncheckedIndexedAccess
strict и noImplicitAny
strict включает набор проверок, а noImplicitAny запрещает параметры и переменные без типа, для которых по умолчанию используется any.
// tsconfig.json (excerpt)
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true
}
}
// Effect demo
function sum(a, b) { // Error: implicit any
return a + b;
}
function sumOk(a: number, b: number): number {
return a + b;
}exactOptionalPropertyTypes
exactOptionalPropertyTypes различает отсутствующее поле и присутствующее, но имеющее значение undefined — это особенно удобно при моделировании API.
// exactOptionalPropertyTypes: true
interface User { name?: string }
const u1: User = {}; // ok: name is absent
const u2: User = { name: undefined }; // Error when exactOptionalPropertyTypes is true
function greet(u: User) {
if ("name" in u) {
// name exists but could be undefined without this flag
console.log("Hi", u.name);
}
}Доступ по индексу (массив)
Теперь обращение к массиву по индексу возвращает T | undefined. Проверяйте значение перед использованием, чтобы избежать сбоев во время выполнения.
// noUncheckedIndexedAccess: true
const xs: number[] = [1,2,3];
const maybe = xs[5]; // type: number | undefined
if (maybe !== undefined) {
console.log(maybe.toFixed(0));
}Доступ по индексу (отображение)
Результаты обращения по индексу к объектам и Record<K,V> включают undefined, пока наличие значения не доказано.
// Also affects records/maps
const byId: Record<string, { id: string }> = {};
const item = byId["x"]; // { id: string } | undefined
if (item) {
console.log(item.id);
}Строгий режим
Начинайте со строгого режима и ослабляйте его только при необходимости. Эти флаги предотвращают распространённые ошибки и почти не создают лишнего шума в новом коде.
// tsconfig.json (excerpt)
{
"compilerOptions": {
"strict": true,
"noImplicitAny": true,
"exactOptionalPropertyTypes": true,
"noUncheckedIndexedAccess": true
}
}Проверка доступа по индексу
Быстрая проверка: что изменяет noUncheckedIndexedAccess?
Повторение
Повторение: strict включает более безопасные значения по умолчанию; noImplicitAny находит отсутствующие типы; exactOptionalPropertyTypes точно моделирует необязательные поля; noUncheckedIndexedAccess требует проверять наличие значений.
Часто задаваемые вопросы
Урок «Флаги строгости» бесплатный?
Да — полный текст урока «Флаги строгости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.
Чему я научусь в уроке «Флаги строгости»?
Включите строгий режим для более безопасного кода: strict, noImplicitAny, exactOptionalPropertyTypes, noUncheckedIndexedAccess. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.
Сколько времени занимает урок «Флаги строгости»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.