Хранить ссылку на пространство имен вместо типа - PullRequest
0 голосов
/ 16 ноября 2018

Скажем, у меня есть пространство имен, например:

export namespace Foo1 {
  export namespace Foo2 {
    export namespace Foo3 {
      export interface Foo4 {}
      export interface Foo5 {}
    }
  }
}

в файле .ts у меня есть что-то вроде этого:

import {Foo1} from './foo';

const bar1 = function(){
   type t = Foo1.Foo2.Foo3.Foo4;
}

const bar2 = function(){
   type t = Foo1.Foo2.Foo3.Foo5;
}

это может быть довольно многословно, вместо этого я собираюсь сделать что-то вроде этого:

import {Foo1} from './foo';

type Foo3 = Foo1.Foo2.Foo3;  // <<< this don't work, I get an error explained below

const bar1 = function(){
   type t = Foo3.Foo4;
}

const bar2 = function(){
   type t = Foo3.Foo5;
}

но я не могу сохранить ссылку на пространство имен, я могу только сохранить ссылку на тип? (Я получаю сообщение об ошибке: у пространства имен Foo2 нет экспортируемого члена Foo3).

1 Ответ

0 голосов
/ 16 ноября 2018

Я попробовал вот так, и это работает

    namespace Shapes {
    export namespace Polygons {
        export namespace Square {
            export interface Foo4 {}

        }

        export namespace Triangle {
            export interface Foo5 {}
        }
    }
}


import polygons = Shapes.Polygons;

type myType = polygons.Square.Foo4;

export class myClass implements polygons.Square.Foo4{
    myFoo4 = 'Foo4';

}


const myFooInstance = new myClass();

console.log(myFooInstance.myFoo4);

enter image description here

...