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

Декларации типов и файлы d.ts

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

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 30
Что описывает declare function в d.ts?
TypeScript
export declare function parse(input: string): Result;
Вопрос 2 из 30
Почему в .d.ts нельзя помещать обычную реализацию функции?
TypeScript
export function sum(a: number, b: number) {
  return a + b;
}
Вопрос 3 из 30
Как объявить перегруженную внешнюю функцию?
TypeScript
export function convert(value: string): number;
export function convert(value: number): string;
Вопрос 4 из 30
Когда ручной d.ts оправдан, а не генерация declaration?
Вопрос 5 из 30
Какой главный риск ручной декларации?
Вопрос 6 из 30
Что делает declare global внутри модуля?
TypeScript
export {};
declare global {
  interface Window { appVersion: string }
}
Вопрос 7 из 30
Почему простой interface Window в модульном .d.ts не всегда расширяет глобальный Window?
TypeScript
export {};
interface Window { appVersion: string }
Вопрос 8 из 30
Как описать глобальную функцию старого скрипта?
TypeScript
declare function legacyFormat(value: string): string;
Вопрос 9 из 30
Почему широкое глобальное дополнение опасно?
Вопрос 10 из 30
Как проверить, что глобальный тип доступен только при подключённом пакете?
Вопрос 11 из 30
Как дать минимальный тип модулю без деклараций?
TypeScript
declare module "legacy-parser" {
  export function parse(input: string): unknown;
}
Вопрос 12 из 30
Что означает пустая декларация declare module 'legacy-parser';?
TypeScript
declare module "legacy-parser";
Вопрос 13 из 30
Почему форма export = должна совпадать с runtime-пакетом?
TypeScript
declare function createClient(): Client;
export = createClient;
Вопрос 14 из 30
Как начать типизацию крупного нетипизированного модуля?
Вопрос 15 из 30
Где хранить локальный d.ts для одной зависимости?
Вопрос 16 из 30
Для чего package.json поле types?
TypeScript
{
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts"
}
Вопрос 17 из 30
Почему declarationMap полезен автору библиотеки?
TypeScript
{
  "compilerOptions": {
    "declaration": true,
    "declarationMap": true
  }
}
Вопрос 18 из 30
Что проверяет npm pack перед выпуском типов?
TypeScript
// Фрагмент для анализа
npm pack --dry-run
Вопрос 19 из 30
Почему библиотеке нужен consumer-fixture?
Вопрос 20 из 30
Как относиться к skipLibCheck в библиотечном проекте?
Вопрос 21 из 30
Что должен подтвердить типовой тест опубликованной функции createClient?
TypeScript
import { createClient } from "typed-client";
const client = createClient({ timeoutMs: 500 });
Вопрос 22 из 30
Какой отрицательный тест полезен для деклараций пакета?
TypeScript
import { createClient } from "typed-client";
// @ts-expect-error — пакет не публикует internalConnect
import { internalConnect } from "typed-client";
Вопрос 23 из 30
Почему корректный d.ts не доказывает, что пакет работает?
TypeScript
export declare function parse(input: string): Result;
Вопрос 24 из 30
После перехода на автоматическую генерацию d.ts пропали перегрузки и осталась широкая сигнатура. Что проверять?
Вопрос 25 из 30
Какой выпускной тест лучше всего ловит ошибки main, types и exports?
Вопрос 26 из 30
Какой exports-контракт даёт больше свободы для внутренних перестановок?
TypeScript
// package.json
// exports: { ".": "./dist/index.js", "./testing": "./dist/testing.js" }
Вопрос 27 из 30
Что в этой декларации является утечкой реализации?
TypeScript
export interface Client {
  readonly version: string;
  transport: InternalSocket;
  request(url: string): Promise<unknown>;
}
Вопрос 28 из 30
Как безопаснее изменить возвращаемый тип parse с Result на Promise<Result>?
TypeScript
export declare function parse(input: string): Promise<Result>;
Вопрос 29 из 30
Как проверить package exports для разных режимов потребителя?
Вопрос 30 из 30
Какой признак говорит, что опубликованные типы слишком тесно повторяют реализацию?

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

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

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

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