Пространство декларации
В TypeScript есть два пространства объявления: пространство объявления типа и пространство объявления переменной. Эти понятия будут рассматриваться ниже.
Пространство объявления типа
Пространство объявления типа содержит код, используемый в качестве аннотации типа, например следующие объявления типа:
class Foo {}
interface Bar {}
type Bas = {};
Вы можете использовать Foo
, Bar
, Bas
в качестве аннотаций типа, например:
let foo: Foo;
let bar: Bar;
let bas: Bas;
Обратите внимание, что хотя вы определяете interface Bar
, вы не можете использовать ее как переменную, поскольку она не определена в пространстве объявления переменных:
interface Bar {}
const bar = Bar; // Error: "cannot find name 'Bar'"
Причина, по которой сообщается cannot find name 'Bar'
, заключается в том, что имя Bar
не определено в пространстве объявления переменных. Это перенесет нас к следующей теме 'Пространство объявления переменных'.
Пространство объявления переменных
Пространство объявления переменных содержит код, который можно использовать в качестве переменных. В приведенном выше описании class Foo
предоставляет тип Foo
для пространства объявления типов. Кроме того, он также предоставляет переменную Foo для пространства объявлений переменных следующим образом:
class Foo {}
const someVar = Foo;
const someOtherVar = 123;
Это замечательно, особенно если вы хотите передать класс в качестве переменной.
Мы не можем использовать interface
в качестве переменной.
Точно так же переменные, которые вы объявляете с помощью var
, const
и let
могут использоваться только в пространстве объявления переменных и не могут использоваться в качестве аннотаций типов.
const foo = 123;
let bar: foo; // ERROR: "cannot find name 'foo'"
Причина, по которой сообщается cannot find name
, заключается в том, что переменная foo
не определена в пространстве объявления типа.
Last updated
Was this helpful?