我使用的是经常推荐的配方:
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-types
(React.PropTypes
)运行时类型在这里不适用。
答案 0 :(得分:5)
As it's suggested in @types/react
,React.Props
已弃用,有利于具有key
和ref
属性的React.ClassAttributes
,因此应该是:
interface IFooProps extends React.ClassAttributes<Foo> {
bar: string;
}
由于组件类使用children
property扩充IFooProps
,this.props.children
符合props
类型。