#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