如何在漂亮的命名空间中获取导出的类型?

时间:2019-01-17 17:12:15

标签: typescript

让我说这些:

src / components / Thing / State.ts:

export type State = { name: string }

src / components / Thing / index.ts

import { State } from './State'

const coolFunction = () => {}

export default {
  State,
  coolFunction,
}

因为我想说import Thing from '../Thing'并能够引用Thing.StateThing.coolFunction

TypeScript告诉我State是类型而不是值,但是它被用作值。我得到了这个错误的概念,但是我不知道该怎么办。我希望将相关内容命名为命名空间,但这似乎是一个障碍。

我在这里有什么选择?

1 个答案:

答案 0 :(得分:1)

您可以使用变量/命名空间合并:

const coolFunction = () => {}
const e = {
    coolFunction,
}
namespace e {
    export type State = import('./State').State;

}
export default e