В TypeScript есть две области объявления: область объявления переменных и область объявления типов. Эти понятия рассматриваются ниже.
Область объявления типа содержит данные, которые можно использовать в качестве описания типа. Например, ниже приведены несколько объявлений типов:
class Foo {};
interface Bar {};
type Bas = {};
Это означает, что вы можете использовать Foo
, Bar
, Bas
и т.д. в качестве описания типа переменных. Например:
var foo: Foo;
var bar: Bar;
var bas: Bas;
Обратите внимание, что даже если у вас есть interface Bar
, вы не можете использовать его как переменную, поскольку он не вносится в пространство объявления переменных. Это показано ниже:
interface Bar {};
var bar = Bar; // ОШИБКА: "не возможно найти имя 'Bar'"
Причина, по которой выдаётся ошибка не могу найти имя
, заключается в том, что имя Bar
не определено в пространстве объявления переменных. Это подводит нас к следующей теме «Пространство объявления переменных».
Область объявления переменных содержит данные, которые вы можете использовать в качестве переменной. Мы видели, что class Foo
добавляет тип Foo
в область объявления типов. B угадайте, что? он также добавляет переменную Foo
в область объявления переменных, как показано ниже:
class Foo {};
var someVar = Foo;
var someOtherVar = 123;
Это здорово, так как иногда вы хотите передавать классы как переменные. Помните, что:
- мы не могли бы использовать что-то вроде
interface
, который находится только в области объявления типов в качестве переменной.
Точно так же то, что вы объявляете с помощью var
, находится только в области объявления переменных и не может использоваться как описание типа:
var foo = 123;
var bar: foo; // ОШИБКА: "не возможно найти имя 'foo'"
Причина, по которой выдаётся ошибка не могу найти имя
, заключается в том, что имя foo
не определено в области объявления типов.