Выбор ответа Middle tsconfig и декларации обновлено

Алиасы paths

Вопрос

В tsconfig добавили "paths": { "@/*": ["./src/*"] }, а в настройки сборщика ничего. Что будет с import { api } from '@/api'?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Типы проверятся, но сборщик или рантайм не найдёт @/api. paths это подсказка только для проверки типов: компилятор найдёт файл и типы.

Варианты ответа

  1. TypeScript перепишет путь на относительный при сборке
  2. Всё работает: tsc и сборщик читают одни настройки
  3. Типы проверятся, но сборщик или рантайм не найдёт @/apiправильный ответ
  4. Ошибка проверки типов: paths без baseUrl не работает вообще

Разбор

paths это подсказка только для проверки типов: компилятор найдёт файл и типы. Пути в выходном коде tsc не переписывает, а Vite, webpack или Node.js про tsconfig по умолчанию ничего не знают. Поэтому нужен тот же алиас в сборщике (или плагин вроде vite-tsconfig-paths), а в Node.js поле imports в package.json.

Начиная с TypeScript 4.1 paths работает без baseUrl. Некоторые инструменты (Next.js, Bun) читают paths сами, но это их особенность, а не поведение TypeScript.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме