我是打字稿的新手。如何从特定文件中导出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";
它会起作用。
编辑:如果我将接口更改为类,它将按预期工作。
答案 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