TS TypeScript  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Ссылки проектов и монорепозиторий

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 30
Что требуется от проекта, на который ссылается другой tsconfig?
TypeScript
{
  "compilerOptions": { "composite": true }
}
Вопрос 2 из 30
Что означает references в приложении?
TypeScript
{
  "references": [
    { "path": "../domain" },
    { "path": "../infra" }
  ]
}
Вопрос 3 из 30
Почему зависимый проект обычно читает d.ts, а не исходники referenced-проекта?
TypeScript
// app references domain
import { User } from "@repo/domain";
Вопрос 4 из 30
Когда project references оправданы?
Вопрос 5 из 30
Почему один корневой tsconfig с include всего монорепозитория слабее?
Вопрос 6 из 30
В показанном фрагменте что делает tsc -b?
TypeScript
// Фрагмент для анализа
tsc -b packages/app
Вопрос 7 из 30
Для чего incremental/tsBuildInfoFile?
TypeScript
{
  "compilerOptions": {
    "incremental": true,
    "tsBuildInfoFile": "./.cache/domain.tsbuildinfo"
  }
}
Вопрос 8 из 30
Почему удаление dist без tsbuildinfo может дать странную 'актуальную' сборку?
TypeScript
rm -rf packages/domain/dist
# build metadata осталось в другом месте
Вопрос 9 из 30
Как кэшировать tsc -b в CI?
Вопрос 10 из 30
Когда полная чистая сборка всё ещё нужна?
Вопрос 11 из 30
Почему импорт src внутреннего workspace-пакета опасен?
TypeScript
import { User } from "../../domain/src/model";
Вопрос 12 из 30
Как shared-пакет превращается в свалку?
TypeScript
@repo/shared
  date.ts
  user.ts
  db.ts
  ui.ts
  server.ts
Вопрос 13 из 30
Что даёт exports в package.json общего пакета?
TypeScript
{
  "exports": {
    ".": "./dist/index.js",
    "./testing": "./dist/testing.js"
  }
}
Вопрос 14 из 30
Где размещать тип, используемый клиентом и сервером?
Вопрос 15 из 30
Когда небольшое дублирование лучше общего пакета?
Вопрос 16 из 30
Что не так с этим графом?
TypeScript
// domain imports infra for DatabaseClient
// infra imports domain for User
Вопрос 17 из 30
Почему paths на packages/*/src может обойти project references?
TypeScript
{
  "paths": { "@repo/*": ["packages/*/src"] }
}
Вопрос 18 из 30
Как статически запретить import из infra в domain?
TypeScript
// desired: domain -> no infra
Вопрос 19 из 30
Как относиться к циклу type-only между пакетами?
Вопрос 20 из 30
Как проверить изоляцию пакета?
Вопрос 21 из 30
Что должен подтвердить тест сборки domain-проекта с composite?
TypeScript
// domain/tsconfig.json
// { "compilerOptions": { "composite": true, "declaration": true } }
Вопрос 22 из 30
Какой отрицательный пример защищает направление зависимостей?
TypeScript
// domain consumer
import type { SqlPool } from "@repo/infra/internal";
Вопрос 23 из 30
Почему успешный tsc -b не доказывает, что workspace-пакеты работают после публикации?
TypeScript
// локально import { x } from "@repo/domain" может разрешаться через paths
Вопрос 24 из 30
Инкрементальная сборка прошла, а чистая упала. Какой тест добавить в CI?
Вопрос 25 из 30
Какой набор проверок лучше защищает монорепозиторий?
Вопрос 26 из 30
Какой публичный API общего пакета меньше всего связывает приложения?
TypeScript
// package exports: ".", "./testing", "./errors"
Вопрос 27 из 30
Что здесь нарушает границу domain-пакета?
TypeScript
export interface DomainApi {
  findUser(id: UserId): Promise<UserSummary | undefined>;
  sqlConnection: InternalPool;
  buildCachePath: string;
}
Вопрос 28 из 30
Два пакета начали ссылаться друг на друга после выделения общего типа. Как лучше исправить граф?
TypeScript
// app -> domain -> shared
// infra -> domain -> shared
Вопрос 29 из 30
Как проверить выпуск нескольких workspace-пакетов?
Вопрос 30 из 30
Какой симптом говорит, что paths размыли архитектурные границы?

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

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

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

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