如果在构造期间没有指定,那么我无法确定如何指定通过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
类型,如果这有任何帮助的话。
如何在打字稿中正常使用?