2017-01-16 76 views
0

我在不同的目录中有很多模板 - 我为每个模板定义了一个接口,因此我可以确定我的TypeScript代码中引用的内容将在模板中可用。在TypeScript中导出导入的接口

我想为它们中的每一个定义一个接口,然后在可导入的单个文件中整理所有接口(这样我总是可以导入该文件,自动完成将显示可用接口)。

但是,我遇到了麻烦。我目前有:

login/interface

export interface Index { 
    error: string; 
    value: string; 
} 

interfaces.ts

import * as login from './login/interface'; 
export let View = { 
    Login: login 
}; 

login.ts

import * as I from './interface'; 
... 
let viewOutput: I.View.Login.Index = { 
    ... 
}; 

结果:

错误TS2694:名称空间'“...'接口''没有导出成员'查看'。

但是,如果我尝试访问I.View.Login.Index作为一个简单的变量,然后我得到:

属性“索引”的类型不存在“的typeof‘......界面’”。

这似乎是正确的,因为界面并不是真正的类型,但它已经能够访问I.View.Login以获得这样的效果。

我不明白我在做什么错或在这里我很害怕。任何帮助将不胜感激!

回答

3

您可以re-export像这样:

// interfaces.ts 
export * from './login/interface'; 
export * from './something/interface'; 

然后:

// login.ts 
import * as I from './interface'; 
let viewOutput: I.Index = { ... } 

另一种选择是:

import * as login from './login/interface'; 
export { login as Login }; 

然后:

// login.ts 
let viewOutput: I.Login.Index = { ... } 
+0

谢谢!我会怎样把它包装在一个'View'对象中(例如'I.View.Login.Index'),这将允许我基本命名空间我的各种视图接口,我似乎无法弄清楚这个语法。 –

+0

你可以用'export ='来做到这一点,但我认为这不是一个好主意 –