打字稿中的嵌套导出

Nested export in typescript

假设我想为 react+typescript 制作一个图标库。 例如,让我们只考虑这个库中的 2 个图标:AppleBanana.

我希望能够分别导入它们,如下所示:

import { Apple } from 'icons'

class MyComponent extends React.Component {
  render() {
    return <Apple/>
  }
}

现在让我们考虑每个图标都有其 自己的 道具集的情况:

type Props = {}
class Apple extends React.Component<Props> {
}
type Props = {}
class Banana extends React.Component<Props> {
}

有什么方法可以通过它们的组件单独导出这些道具? 像这样:

import { Apple } from 'icons'

class MyComponent extends React.Component<Apple.Props> {
  render() {
    // passing all the props into the apple
    return <Apple {...this.props}/>
  }
}

参见

尝试

import { ComponentProps } from 'react';

class MyComponent extends React.Component<ComponentProps<typeof Apple>> {
  render() {
    return <Apple {...this.props} />
  }
}

请注意,这假定导入的 Apple 是有效的 React 组件。

也可以考虑研究这个 typescript cheatsheet for react 以更好地掌握 typescript 可以为 React 做些什么。

除了导出组件,您还可以导出类型。

export type AppleProps = {}
export class Apple extends React.Component<AppleProps> {
}

然后您可以将它们用作:

import { Apple, AppleProps } from 'icons'