Простори Оголошень / Declaration Spaces

У TypeScript є два простори оголошень: простір оголошення variable і простір оголошення type. Ці поняття досліджуються нижче.

Type Declaration Space

Простір оголошення типу містить матеріал, який можна використовувати як анотацію типу. Наприклад нижче наведено кілька декларацій типів:

class Foo {};
interface Bar {};
type Bas = {};

Це означає, що ви можете використовувати Foo, Bar, Bas як анотацію типу. Наприклад:

var foo: Foo;
var bar: Bar;
var bas: Bas;

Зауважте, що навіть якщо у вас є інтерфейс, ви не можете використовувати її як змінну, оскільки вона не сприяє простору оголошення змінних. Це показано нижче:

interface Bar {};
var bar = Bar; // ERROR: "cannot find name 'Bar'"

Причина, чому він каже не вдається знайти ім’я, полягає в тому, що ім’я Bar не визначено у просторі оголошення змінної. Це підводить нас до наступної теми «Простір оголошення змінних».

Variable Declaration Space

Простір оголошення змінної містить матеріал, який можна використовувати як змінну. Ми побачили, що наявність class Foo вносить тип Foo в простір оголошення type. Вгадай що? Він також додає змінну Foo до простору оголошення змінної, як показано нижче:

class Foo {};
var someVar = Foo;
var someOtherVar = 123;

Це чудово, оскільки іноді ви хочете передати класи як змінні. Пам'ятайте, що:

  • ми не могли використовувати щось на зразок інтерфейсу, який є тільки у просторі оголошення type як змінну.

Подібним чином те, що ви оголошуєте за допомогою var, знаходиться тільки в просторі оголошення variable і не може використовуватися як анотація типу:

var foo = 123;
var bar: foo; // ERROR: "cannot find name 'foo'"

Причина, чому написано не вдається знайти ім’я, полягає в тому, що ім’я foo не визначено у просторі оголошення type.

Last updated