DefaultProps实现了在Typescript中编写的React组件中的必需属性

时间:2017-04-22 01:35:06

标签: reactjs typescript

如果在构造期间没有指定,那么我无法确定如何指定通过defaultProps提供的非可选组件属性。

我的来源:

'use strict';
import * as React from 'react';
import {DOM as dom} from 'react';
import * as ReactDOM from 'react-dom';

interface PropsType {
    requiredString: string,
    optionalString?: string,
};

class MyComponent extends React.Component<PropsType, {}> {
    static defaultProps = {
        requiredString: 'defaultRequiredString',
    };

    render() {
        return dom.div(
            {},
            this.props.requiredString,
            this.props.optionalString || 'defaultOptionalString',
        );
    }
}

ReactDOM.render(React.createElement(MyComponent, {}));

这给了我:

$ tsc base.ts
base.ts(25,50): error TS2345: Argument of type '{}' is not assignable 
to parameter of type 'Attributes & PropsType'.
  Type '{}' is not assignable to type 'PropsType'.
    Property 'requiredString' is missing in type '{}'.

通过React文档(https://facebook.github.io/react/docs/typechecking-with-proptypes.html)阅读,我看到以下内容:

  

propTypes类型检查在defaultProps解析后发生,因此类型检查也将应用于defaultProps。

这让我相信应该允许这种形式(实际上,我试图移植到打字稿的大型代码库已经将这个假设结合起来)。我很乐意为Partial<>使用defaultProps类型,如果这有任何帮助的话。

如何在打字稿中正常使用?

0 个答案:

没有答案