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),那么我就不必到处导入它了”\_(ツ)_/¯. (如果这是你的问题,是的,但每个减速机都有一个状态。我不是说全局状态,而是单个减速机状态,稍后当我在全局状态中组合它们时,我需要参考它们。我认为目前还没有最佳实践。我认为在减速机文件中声明减速机状态的接口是非常直观的,并且当你声明你的全局状态的时候,你会忘记所有这些。