Typescript Глубокое Погружение
  • Typescript Глубокое Погружение
  • Typescript проект
    • Контекст компиляции
    • Пространство декларации
    • Модули
    • Пространства имен
    • Динамический импорт выражений
  • Typescript Система типов
    • Обзор
    • Миграция с JavaScript
    • @types
    • Декларация окружения
    • Интерфейсы
    • Перечисления
    • lib.d.ts
    • Функции
    • Подлежащий выкупу
    • Тип утверждения
    • Freshness
    • Тип защиты
    • Литеральный тип
    • readonly
    • Дженерики
    • Тип вывода
    • Тип совместимости
Powered by GitBook
On this page
  • Пространство объявления типа
  • Пространство объявления переменных

Was this helpful?

  1. Typescript проект

Пространство декларации

В 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 не определена в пространстве объявления типа.

PreviousКонтекст компиляцииNextМодули

Last updated 5 years ago

Was this helpful?