Пространство декларации
В 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 для пространства объявлений переменных следующим образом:
Это замечательно, особенно если вы хотите передать класс в качестве переменной.
Мы не можем использовать interface в качестве переменной.
Точно так же переменные, которые вы объявляете с помощью var, const и let могут использоваться только в пространстве объявления переменных и не могут использоваться в качестве аннотаций типов.
Причина, по которой сообщается cannot find name, заключается в том, что переменная foo не определена в пространстве объявления типа.
Last updated
Was this helpful?