如何将命名空间类型声明拆分为多个文件,但能够在Typescript中作为单个命名空间导入

时间:2017-06-15 22:55:34

标签: typescript typescript2.0

我试图实现以下目标: (不要紧,这些类型的结构是相同的。这仅用于演示目的)。目标是没有一个大型文件用于我想要导出的命名空间。

import Animal from 'types/animal/index.ts'

const dog:Animal.Dog = {
  sound: 'bark',
  legs: 4
}

const cat:Animal.Cat = {
  sound: 'meow',
  legs: 4
}

类型/动物/ index.ts

// somehow import the animal types from separate files and export in one "Animal" namespace

类型/ Cat.ts

export namespace Animal {
  export interface Cat {
    sound: string
    legs: number
  }
}

类型/ Dog.ts

export namespace Animal {
  export interface Dog {
    sound: string
    legs: number
  }
}

1 个答案:

答案 0 :(得分:1)

假设您的Dog.tsCat.ts确实位于types,而不是types/animaltypes/animal/index.ts中的此类内容应该可以完成此任务:< / p>

import * as Animal_Dog from '../Dog';
import * as Animal_Cat from '../Cat';


namespace Animal {
    export type Dog = Animal_Dog.Animal.Dog;
    export type Cat = Animal_Cat.Animal.Cat;
}

export default Animal;