使用TypeScript反射道具类型

时间:2018-02-16 09:31:52

标签: reactjs typescript

我使用的是经常推荐的配方:

interface IFooProps extends React.Props<Foo> {
    bar: string;
}

export class Foo extends React.Component<IFooProps, {}> {
    render() {
        return <p className={this.props.bar}>{this.props.children}<p>
    }
}

但是,React.Props已被标记为已弃用,其中包含React 16和相应的@types/react

这样做的正确方法是什么?

这主要是TypeScript类型问题,prop-typesReact.PropTypes)运行时类型在这里不适用

1 个答案:

答案 0 :(得分:5)

As it's suggested in @types/reactReact.Props已弃用,有利于具有keyref属性的React.ClassAttributes,因此应该是:

interface IFooProps extends React.ClassAttributes<Foo> {
    bar: string;
}

由于组件类使用children property扩充IFooPropsthis.props.children符合props类型。