Использовать пространство имен в Typescript

#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, не используйте пространства имен.