Typescript导出和重新导出接口及其他数据
我是打字新手。如何从特定文件导出类型定义(类、接口)+所有变量?我试过这个: 模型Typescript导出和重新导出接口及其他数据,typescript,import,export,Typescript,Import,Export,我是打字新手。如何从特定文件导出类型定义(类、接口)+所有变量?我试过这个: 模型 export interface CounterState { count: number; } let t = 5; export {t}; 索引 import * as models from './models'; models.t -> ok models.CounterState -> not visible, why? export default { models };
export interface CounterState {
count: number;
}
let t = 5;
export {t};
索引
import * as models from './models';
models.t -> ok
models.CounterState -> not visible, why?
export default { models };
减速机
import CounterStore from "./index";
CounterStore.models.t -> ok
CounterStore.models.CounterState -> not visible, why?
为什么不全部导入?
如果我这样做:import{CounterState}from“/models”代码>它会工作的
编辑:如果我将接口更改为类,它将按预期工作。问题不在于导入/导出,而在于您正在尝试评估接口,这是不可能的:
- 实际的接口声明不会编译成任何javascript,因此尝试调用
models.CounterState
在编译的js中没有任何意义
- 但是,如果您声明了一个类,那么您确实有一个已编译的结果。这就解释了为什么这不会抛出错误
我只想对打字错误的极端模糊性再喊一声。感谢您的澄清,->我如何在打字稿中遵循这些规则?我的意思是创建包含其他模块所有内容的索引?我不是100%确定你的意思。如果我正在创建redux应用程序,我通常只是将状态接口放在根目录中的某个全局声明文件中(例如index.d.ts),那么我就不必到处导入它了”\_(ツ)_/¯. (如果这是你的问题,是的,但每个减速机都有一个状态。我不是说全局状态,而是单个减速机状态,稍后当我在全局状态中组合它们时,我需要参考它们。我认为目前还没有最佳实践。我认为在减速机文件中声明减速机状态的接口是非常直观的,并且当你声明你的全局状态的时候,你会忘记所有这些。