Typescript导出和重新导出接口和其他数据

时间:2016-08-19 07:58:33

标签: typescript import export

我是打字稿的新手。如何从特定文件中导出typedefinitions(类,接口)+所有变量?我试过这个:

models.ts

export interface CounterState {
    count: number;
}

let t = 5;
export {t}; 

index.ts

import * as models from './models';
models.t -> ok
models.CounterState -> not visible, why?
export default  { models };

reducer.ts

import CounterStore from "./index";


CounterStore.models.t -> ok
CounterStore.models.CounterState -> not visible, why?

为什么*不导入所有内容? 如果我这样做:import {CounterState} from "./models";它会起作用。

编辑:如果我将接口更改为类,它将按预期工作。

1 个答案:

答案 0 :(得分:1)

问题不在于导入/导出,而在于尝试评估接口,这是不可能的:

  • 实际的接口声明不会编译为任何javascript,因此尝试调用models.CounterState在编译的js中没有任何意义。

  • 但是如果你声明了一个类,那么你确实有一个编译结果。这解释了为什么这不会引发错误。

我只是想对打字稿错误的极端模糊提出另一个呼喊。

对于两者之间的差异,请查看equivalent playground example及其编译内容:

interface ICounter { // No compilation result
  count: number 
}

class Counter { // has actual compilation result
  count: number
}

let interfaceImplemenetation: ICounter // Compiles fine
Counter // Compiles fine
ICounter // Compiles to undefined