В чем преимущество пространства имен в машинописи, если он используется в качестве контейнера для типов - PullRequest
0 голосов
/ 12 октября 2018

Зачем мне хранить тип в пространстве имен, а не просто экспортировать его.

Пример Я мог бы сделать это

export interface Document {
  first_name: string
  status: Document.DocumentStatus
}

export namespace Document {
  export type DocumentStatus = 'active' | 'inactive'
}

Но я мог бы достичь того же результата с использованием пространства имен

export interface Document {
  first_name: string
  status: DocumentStatus
}

export type DocumentStatus = 'active' | 'inactive'

В чем преимущество использования пространств имен в этом контексте?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

TypeScript namespace (ранее module и известный как «внутренний модуль») предшествует синтаксису модуля ES import / export и в настоящее время в значительной степени устарел.Использование пространства имен обычно может считаться избыточным при использовании модулей ES .Вы все еще можете использовать namespace для организационных целей, если хотите, но это в основном личный выбор.Обратите внимание, что с модулями ES вы все равно можете импортировать в качестве пространства имен , то есть import * as Document from "./Document", поэтому использование ссылок, таких как Document.Status, не зависит от использования namespace.В конце концов, это действительно просто выбор организации.

0 голосов
/ 12 октября 2018

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

Например,

    Document.Status
    Document.Content
    Document.Owner
    Person.Name
    Person.Status
    Person.Address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...