Поле exports и типы библиотеки
Вопрос
Библиотека публикует ESM и CJS через exports в package.json. Где должно стоять условие "types" в объекте условий?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Первым: условия выбираются по порядку,
typesдолжен быть доimportправильный ответ - Последним, после
default: туда TS заглядывает в самом конце обхода - Не важно где: TS сам сортирует условия и всегда начинает с
types - Вне
exports, только в полеtypingsна верхнем уровне package.json
Разбор
При moduleResolution: node16/nodenext/bundler TS разрешает exports как Node: обходит условия в порядке объявления и берёт первое подходящее. Если default стоит раньше types, TS найдёт JS-файл и не увидит декларации. Для двойного пакета часто нужны отдельные декларации на каждую ветку (.d.mts для import и .d.cts для require), иначе типы будут врать о формате модуля. Поле types на верхнем уровне package.json в этих режимах игнорируется, если есть exports.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.