Пространства имен TypeScript будут прекращены?

#typescript #namespaces

#typescript #пространства имен

Вопрос:

Недавно я прочитал немало от разработчиков, которые предлагают больше не использовать пространства имен, а перейти на современную обработку модулей. Я преподаю программирование новичкам с использованием TypeScript, и пространства имен здесь очень ценны, поскольку люди могут работать над несколькими назначениями в течение более длительного периода времени в одном каталоге и подкаталогах, без необходимости иметь дело с несколькими файлами конфигурации компилятора и экспортом и импортом модулей. Они просто определяют пространство имен для задачи и используют его в файлах, которые они создают для нее.

Итак, мой вопрос: планируется ли прекратить использование пространств имен в TypeScript?

Комментарии:

1. Вопрос кажется не по теме. Кроме того, модули действительно не так сложны и не требуют нескольких конфигураций.

2. Пространства имен и модули принципиально решают ту же проблему разделения кода на отдельные фрагменты. Я не уверен, что действительно вижу какое-либо преимущество пространства имен над модулем. В любом случае вы делаете одно и то же в обоих случаях — вам нужно создать пространство имен / модуль, затем ссылаться / импортировать его, что позволит вам использовать элементы внутри. Вместо /// <reference path="dir/Utils.ts" /> того, чтобы вы должны поставить import * as Utils from './dir/Utils' , а затем Utils.foo() работает то же самое. Модули — это путь вперед в любом случае, поэтому я не вижу смысла в том, чтобы не рассказывать о них студентам.

Ответ №1:

Итак, мой вопрос: планируется ли прекратить использование пространств имен в TypeScript?

Вероятно, нет. Вот комментарий сотрудника Microsoft по другому вопросу, но, похоже, это общее замечание:

Это не позиция команды TS. у нас нет планов по отказу от какой-либо вещи в ближайшее время. (источник)

В любом случае, модульная система ES6 — это правильный путь. Я предлагаю статью от Mozilla о том, как импортировать модуль в качестве пространства имен:

Когда вы import * импортируете объект пространства имен модуля. Его свойства — это экспорт модуля.

Комментарии:

1. Я написал небольшую статью о совместном использовании пространств имен и модулей. Может быть, это кому-то полезно или интересно: jirkadelloro.github.io/TS-Namespaces-ES-Modules