Перейти к содержанию

Области объявления

В TypeScript есть две области объявления: область объявления переменных и область объявления типов. Эти понятия рассматриваются ниже.

Область объявления типов

Область объявления типа содержит данные, которые можно использовать в качестве описания типа. Например, ниже приведены несколько объявлений типов:

1
2
3
class Foo {}
interface Bar {}
type Bas = {};

Это означает, что вы можете использовать Foo, Bar, Bas и т. д. в качестве описания типа переменных. Например:

1
2
3
var foo: Foo;
var bar: Bar;
var bas: Bas;

Обратите внимание, что даже если у вас есть interface Bar, вы не можете использовать его как переменную, поскольку он не вносится в пространство объявления переменных. Это показано ниже:

1
2
interface Bar {}
var bar = Bar; // ОШИБКА: "невозможно найти имя 'Bar'"

Причина, по которой выдаётся ошибка не могу найти имя, заключается в том, что имя Bar не определено в пространстве объявления переменных. Это подводит нас к следующей теме «Пространство объявления переменных».

Область объявления переменных

Область объявления переменных содержит данные, которые вы можете использовать в качестве переменной. Мы видели, что class Foo добавляет тип Foo в область объявления типов. B угадайте, что? он также добавляет переменную Foo в область объявления переменных, как показано ниже:

1
2
3
class Foo {}
var someVar = Foo;
var someOtherVar = 123;

Это здорово, так как иногда вы хотите передавать классы как переменные. Помните, что:

  • мы не могли бы использовать что-то вроде interface, который находится только в области объявления типов в качестве переменной.

Точно так же то, что вы объявляете с помощью var, находится только в области объявления переменных и не может использоваться как описание типа:

1
2
var foo = 123;
var bar: foo; // ОШИБКА: "невозможно найти имя 'foo'"

Причина, по которой выдаётся ошибка не могу найти имя, заключается в том, что имя foo не определено в области объявления типов.

Комментарии