Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 626новых вакансий за сутки·54 602вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 579
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 395 кандидатов открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python8 901
  • Облачные технологии6 726
  • QA вакансии2 191
  • Android1 324
  • Инженер данных862
  • Продакт-менеджер318

Разработка

  • iOS1 240
  • Backend вакансии1 212
  • AI вакансии553
  • Fullstack вакансии503
  • Frontend вакансии428
  • Mobile вакансии28

По стеку

  • Go5 300
  • Java3 171
  • Kotlin1 128
  • Node.js1 016
  • Rust862
  • .NET676
  • PHP321
  • C++273
  • C#208

DevOps и инфраструктура

  • Kubernetes3 956
  • Linux-инфраструктура2 871
  • DevOps вакансии2 705
  • Terraform / IaC2 199
  • Мониторинг и Observability1 084
  • CI/CD920
  • SRE314
  • Кибербезопасность38

Аналитика и данные

  • Аналитик данных529
  • Data Scientist437
  • Бизнес-аналитик398
  • Системный аналитик68

Другие направления

  • Проджект-менеджер109
  • UI/UX дизайн67
  • Ручное тестирование14

По регионам

  • Вакансии в США25 642
  • Вакансии в Европе10 304
  • Работа в России3 639
  • Вакансии в Канаде2 255

По формату

  • Удалённые вакансии42 339
  • Релокация в США25 642
  • Гибридная работа5 706
  • Офисная работа4 402

По уровню

  • Senior вакансии22 510
  • Middle вакансии11 429
  • Junior вакансии3 877

Сейчас нанимают

Все компании
  • Wise192 вакансии
  • Rakuten189 вакансий
  • ASML164 вакансии
  • Grab134 вакансии
  • Celonis47 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме TypeScriptВсе вопросы
TypeScriptMiddleТеория

Что дают noUncheckedIndexedAccess, exactOptionalPropertyTypes и strict-режим в tsconfig?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

strict включает базовый набор проверок; noUncheckedIndexedAccess добавляет | undefined при индексном доступе к массивам и Record; exactOptionalPropertyTypes запрещает явный undefined там, где свойство просто необязательно.

strict-режим в tsconfig

Флаг "strict": true включает сразу несколько проверок одним ключом: strictNullChecks, strictFunctionTypes, strictBindCallApply, strictPropertyInitialization, noImplicitAny, noImplicitThis, alwaysStrict и useUnknownInCatchVariables. Это базовая линия безопасности для любого нового проекта.

{
  "compilerOptions": {
    "strict": true,
    "noUncheckedIndexedAccess": true,
    "exactOptionalPropertyTypes": true
  }
}

noUncheckedIndexedAccess

Без этого флага TypeScript считает, что обращение к массиву или Record по индексу всегда возвращает элемент нужного типа. Это неверно — индекс может выйти за границы.

const arr: string[] = ['hello'];

// Без noUncheckedIndexedAccess:
const s: string = arr[99]; // компилятор молчит, runtime — undefined

// С noUncheckedIndexedAccess:
const s2 = arr[99]; // тип: string | undefined
const len = s2.length; // Ошибка: Object is possibly 'undefined'
const len2 = s2?.length; // OK

Аналогично для Record<string, T>:

const map: Record<string, number> = {};
const val = map['missing']; // number | undefined — безопаснее

exactOptionalPropertyTypes

По умолчанию TypeScript разрешает явно присвоить undefined необязательному свойству, хотя семантически это разные вещи: свойство «отсутствует» vs свойство «присутствует со значением undefined».

interface Config {
  timeout?: number; // означает: число ИЛИ свойство не существует
}

// Без exactOptionalPropertyTypes — оба варианта OK:
const c1: Config = { timeout: undefined }; // присвоено undefined
const c2: Config = {};                      // свойство отсутствует

// С exactOptionalPropertyTypes:
const c3: Config = { timeout: undefined }; // Ошибка!
// Type 'undefined' is not assignable to type 'number'
const c4: Config = {};                      // OK

// Чтобы разрешить undefined явно — укажите union:
interface Config2 {
  timeout?: number | undefined;
}

Это критично при работе с Object.assign, spread и Partial<T> — без флага можно случайно «затереть» существующее свойство через явный undefined.

Сравнение и когда включать

  • strict — включать всегда на новых проектах.
  • noUncheckedIndexedAccess — включать если важна корректность работы с коллекциями; на легаси-коде может дать много предупреждений сразу.
  • exactOptionalPropertyTypes — включать если код активно использует необязательные свойства и важно различать «нет свойства» и «свойство = undefined»; хорошо сочетается с Zod/Valibot-схемами.

Подводные камни

  • noUncheckedIndexedAccess ломает for-of безопасным способом — итерация через индекс (arr[i]) потребует проверки, хотя for-of сам по себе гарантирует существование элемента.
  • Partial<T> + exactOptionalPropertyTypes — Partial<T> генерирует prop?: T[K] без | undefined, что означает: явное undefined снова запрещено в Partial-объектах.
  • Миграция существующей кодовой базы — включение этих флагов на большом проекте может выдать сотни ошибок одновременно; лучше включать постепенно через @ts-expect-error.
  • Взаимодействие с библиотеками — типы из @types/* не всегда написаны с учётом exactOptionalPropertyTypes и могут конфликтовать.
  • noUncheckedIndexedAccess не охватывает деструктуризацию — const [first] = arr не добавляет | undefined к first, только прямой индекс.
  • Ложная строгость с tuples — для tuple типов TypeScript знает длину, но noUncheckedIndexedAccess всё равно добавляет | undefined при доступе через переменный индекс.
  • strict не включает noUncheckedIndexedAccess и exactOptionalPropertyTypes — это отдельные флаги, которые нужно добавлять явно даже при "strict": true.

Типичные ошибки

  • Отвечать определением без production-сценария.
  • Не называть runtime boundary, security boundary или failure mode.
  • Игнорировать версию API, observability и тестовую проверку.

Что проверяет интервьюер

  • Объясняет механизм своими словами и без выдуманных API.
  • Называет реальные риски, диагностику и критерий корректности.
  • Связывает ответ с текущей документацией и миграционными ограничениями.

Как вы знаете этот вопрос?

Проверить себя по теме TypeScript →

Источники

  • https://www.typescriptlang.org/docs/handbook/type-compatibility.html
  • https://www.typescriptlang.org/docs/handbook/2/functions.html

Связанные темы

TypeScriptrisk-analysistechnical-depthtypescript-production

Вакансии с этим навыком

TypeScript вакансии
  • Fullstack-разработчик (Node.js/React)
  • HMI D&E Software- Delivery Line Manager - Hsinchu
  • AI Enablement Lead (GenAI Value Lab) (#5686)
  • Lead Fullstack Engineer (React+Next.js) (#5392)
  • Senior Python Engineer (with TypeScript and Agentic development experience) (#5874)

Частые вопросы на собеседовании

  • Что такое TypeScript и какие основные преимущества он даёт по сравнению с обычным JavaScript?
  • В чём разница между interface и псевдонимом типа (type) в TypeScript?
  • Что такое generics в TypeScript и зачем они нужны? Приведите пример.
  • Для каких задач TypeScript является сильным выбором, а где лучше честно выбрать другой язык?