#typescript #namespaces
#typescript #пространства имен
Вопрос:
Есть ли какая-либо альтернатива для using namespace
в TypeScript? Здесь у меня есть некоторый файл с пространствами имен и интерфейсами:
declare namespace NamespaceA {
export interface IClassA { }
export namespace NamespaceB {
export interface IClassB { }
export namespace NamespaceC {
export interface IClassC1 { }
export interface IClassC2 { }
export interface IClassC3 { }
}
}
}
Я хотел бы использовать IClassC1
, IClassC2
и IClassC3
в другом файле:
class ClassA implements NamespaceA.NamespaceB.NamespaceC.IClassC1 { }
class ClassB implements NamespaceA.NamespaceB.NamespaceC.IClassC2 { }
class ClassC implements NamespaceA.NamespaceB.NamespaceC.IClassC3 { }
Писать такие длинные имена не очень приятно. Итак, я создал собственный тип для каждого интерфейса:
type IClassC1 = NamespaceA.NamespaceB.NamespaceC.IClassC1
type IClassC2 = NamespaceA.NamespaceB.NamespaceC.IClassC2
type IClassC2 = NamespaceA.NamespaceB.NamespaceC.IClassC2
class ClassA implements IClassC1 { }
class ClassB implements IClassC2 { }
class ClassC implements IClassC3 { }
Но есть ли какой-нибудь лучший способ? Например:
using namespace NamespaceA.NamespaceB.NamespaceC
class ClassA implements IClassC1 { }
class ClassB implements IClassC2 { }
class ClassC implements IClassC3 { }
Комментарии:
1. как насчет использования модулей? Они имеют лучший синтаксис импорта
2. Для интерфейса используйте пакет, подобный webpack. Благодаря комплектовщику вы сможете использовать модули ES6. Тогда вообще не используйте пространства имен .
3. Как упоминалось выше в Paleo, не используйте пространства имен.