TS TypeScript  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Классы и модификаторы доступа

Вопросы требуют читать код, сопоставлять статические гарантии с поведением JavaScript и выбирать решение, которое не рассыплется при развитии проекта.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. Код читайте построчно: часть заданий проверяет не результат JavaScript, а то, что TypeScript способен доказать до запуска.
Вопрос 1 из 20
Какая строка вызывает ошибку доступа?
TypeScript
class Account {
  public owner = "Ada";
  private balance = 100;
}
const account = new Account();
console.log(account.owner);
console.log(account.balance);
Вопрос 2 из 20
Что важно знать о private в TypeScript после компиляции?
TypeScript
class Vault {
  private secret = "key";
}
Вопрос 3 из 20
Почему два класса несовместимы, хотя публичная структура одинакова?
TypeScript
class A { private tag = 0; value = "x" }
class B { private tag = 0; value = "x" }
let a: A = new B();
Вопрос 4 из 20
Когда публичное поле класса лучше заменить методом или accessor?
Вопрос 5 из 20
Нужно скрыть секрет даже от нетипизированного JavaScript. Что выбрать?
Вопрос 6 из 20
В показанном фрагменте где доступно поле id?
TypeScript
class Base {
  protected id = "base";
}
class Child extends Base {
  read() { return this.id; }
}
const child = new Child();
child.id;
Вопрос 7 из 20
Почему доступ может быть запрещён в наследнике?
TypeScript
class Base { protected x = 1 }
class Derived extends Base {
  compare(other: Base) {
    return other.x;
  }
}
Вопрос 8 из 20
Какую проблему показывает слишком частое использование protected?
TypeScript
class Report {
  protected rows: string[] = [];
}
class CsvReport extends Report {
  export() { return this.rows.join(","); }
}
Вопрос 9 из 20
Когда protected оправдан?
Вопрос 10 из 20
Как уменьшить связанность наследника с базовым классом?
Вопрос 11 из 20
Почему класс должен быть abstract?
TypeScript
abstract class Shape {
  abstract area(): number;
}
new Shape();
Вопрос 12 из 20
Что обязан сделать Circle?
TypeScript
abstract class Shape {
  abstract area(): number;
  label() { return "shape"; }
}
class Circle extends Shape {
  constructor(readonly radius: number) { super(); }
}
Вопрос 13 из 20
Зачем включать noImplicitOverride?
TypeScript
class Base { save() {} }
class Child extends Base { override save() {} }
Вопрос 14 из 20
Когда абстрактный класс лучше интерфейса?
Вопрос 15 из 20
Почему глубокая иерархия абстрактных классов часто хрупка?
Вопрос 16 из 20
Что проверяет implements?
TypeScript
interface Clock {
  now(): Date;
}
class SystemClock implements Clock {
  now() { return new Date(); }
  reset() {}
}
Вопрос 17 из 20
Почему implements не меняет тип параметра метода?
TypeScript
interface Service { handle(value: string | number): void }
class TextService implements Service {
  handle(value: string) {}
}
Вопрос 18 из 20
Как проверить и static-сторону класса?
TypeScript
interface SerializableInstance { serialize(): string }
interface SerializableConstructor { new (): SerializableInstance; version: number }
Вопрос 19 из 20
Класс реализует огромный интерфейс, но использует только два метода. Что это может означать?
Вопрос 20 из 20
Почему implements не является runtime-проверкой переданного объекта?

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

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

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

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