TS TypeScript  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  · 

Модули и разрешение импортов

Разбирает тему «Модули и разрешение импортов» на практических сценариях: поиск дефектов, сравнение решений и оценка последствий. Вопросы требуют читать код, сопоставлять статические гарантии с поведением JavaScript и выбирать решение, которое не рассыплется при развитии проекта.

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 25
Что делает type-only import?
TypeScript
import type { User } from "./model.js";
const current: User = { id: "u1" };
Вопрос 2 из 25
Почему этот импорт требует обычной формы, а не import type?
TypeScript
import { Status } from "./status.js";
console.log(Status.Ready);
Вопрос 3 из 25
В показанном фрагменте что делает export type?
TypeScript
export type { User, UserId } from "./model.js";
Вопрос 4 из 25
Почему barrel-файл export * может создать неожиданную runtime-зависимость?
Вопрос 5 из 25
Когда default export ухудшает сопровождение?
Вопрос 6 из 25
Почему импорт ./user может вести себя иначе в NodeNext и bundler resolution?
TypeScript
import { user } from "./user";
Вопрос 7 из 25
Что означает package.json exports для TypeScript?
TypeScript
{
  "exports": {
    ".": { "types": "./dist/index.d.ts", "import": "./dist/index.js" }
  }
}
Вопрос 8 из 25
Почему baseUrl/paths не переписывают runtime-import сами по себе?
TypeScript
{
  "compilerOptions": { "paths": { "@app/*": ["src/*"] } }
}
Вопрос 9 из 25
Как выбрать moduleResolution?
Вопрос 10 из 25
Как расследовать, почему выбран не тот declaration-файл?
Вопрос 11 из 25
Что делает paths в этом примере?
TypeScript
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": { "@core/*": ["src/core/*"] }
  }
}
Вопрос 12 из 25
Почему alias на внутренний каталог может нарушить архитектуру?
TypeScript
import { secret } from "@app/internal/cache";
Вопрос 13 из 25
Как package imports (#core/*) отличается от одного tsconfig paths?
TypeScript
// package.json
{ "imports": { "#core/*": "./dist/core/*.js" } }
Вопрос 14 из 25
Когда относительные импорты лучше alias?
Вопрос 15 из 25
Что проверить перед сменой alias?
Вопрос 16 из 25
Какой риск в цикле модулей?
TypeScript
// a.ts
import { b } from "./b.js";
export const a = b + 1;
// b.ts
import { a } from "./a.js";
export const b = a + 1;
Вопрос 17 из 25
Почему type-only cycle часто менее опасен?
TypeScript
// a.ts
import type { B } from "./b.js";
export type A = { b: B };
Вопрос 18 из 25
Как разорвать value-cycle между сервисами?
TypeScript
// UserService импортирует AuditService,
// AuditService импортирует UserService.
Вопрос 19 из 25
Почему barrel-файлы затрудняют поиск циклов?
Вопрос 20 из 25
Как проверять циклические зависимости?
Вопрос 21 из 25
Что должен подтвердить тест с import type при включённом verbatimModuleSyntax?
TypeScript
import type { User } from "./model.js";
export function label(user: User) { return user.id; }
Вопрос 22 из 25
Какой отрицательный тест полезен для package exports?
TypeScript
// consumer.ts
import { internalHelper } from "pkg/dist/internal.js";
Вопрос 23 из 25
Почему тест path alias должен запускаться и после сборки?
Вопрос 24 из 25
После замены обычного импорта на import type исчез цикл в runtime. Как это проверить?
Вопрос 25 из 25
Какой тест лучше защищает смену moduleResolution с node на nodenext?

Ответьте на все 25 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу