我是 typescript 的新手。如何从特定文件中导出类型定义(类、接口(interface))+所有变量?我试过这个:
模型.ts
export interface CounterState {
count: number;
}
let t = 5;
export {t};
索引.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";
它会起作用。
编辑:如果我将接口(interface)更改为类,它会按预期工作。
最佳答案
问题不在于导入/导出,而在于您正在尝试评估接口(interface),这是不可能的:
实际的接口(interface)声明不会编译成任何 javascript,因此尝试调用
models.CounterState
在已编译的 js 中没有任何意义。但是,如果您声明了一个类,您就会得到一个编译结果。这解释了为什么这不会引发错误。
我只想对 typescript 错误的极端模糊性再次大声疾呼。 😐
两者的区别,看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
关于Typescript 导出和再导出接口(interface)及其他数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39033915/