在TypeScript中导出导入的接口

All*_*ine 7 typescript

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

我想为每个接口定义一个接口,然后整理一个可以导入的文件中的所有接口(所以我总是可以导入该文件,自动完成将显示哪些接口可用).

但是,我在做这件事时遇到了麻烦.我目前拥有的:

login/interface:

export interface Index {
    error: string;
    value: string;
}
Run Code Online (Sandbox Code Playgroud)

interfaces.ts:

import * as login from './login/interface';
export let View = {
    Login: login
};
Run Code Online (Sandbox Code Playgroud)

login.ts:

import * as I from './interface';
...
let viewOutput: I.View.Login.Index = {
   ...
};
Run Code Online (Sandbox Code Playgroud)

结果是:

错误TS2694:命名空间'"... interface"'没有导出的成员'View'.

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

类型'typeof'... interface"'上不存在属性'Index'.

这似乎是正确的,因为接口不是真正的类型,但它已经能够访问I.View.Login到那么远.

我不明白我在做错了什么或错过了什么我害怕.任何帮助将不胜感激!

Nit*_*mer 13

您可以像这样重新导出:

// interfaces.ts
export * from './login/interface';
export * from './something/interface';
Run Code Online (Sandbox Code Playgroud)

然后:

// login.ts
import * as I from './interface';
let viewOutput: I.Index = { ... }
Run Code Online (Sandbox Code Playgroud)

另一种选择是:

import * as login from './login/interface';
export { login as Login };
Run Code Online (Sandbox Code Playgroud)

然后:

// login.ts
let viewOutput: I.Login.Index = { ... }
Run Code Online (Sandbox Code Playgroud)