【发布时间】:2020-04-12 15:59:33
【问题描述】:
我有一个简单的 React 组件,可以将两个数字相加。它是用 TypeScript 编写的,并使用 @types/prop-types。
import React from 'react';
import PropTypes from 'prop-types';
const AddPropsTypes = {
first: PropTypes.number,
second: PropTypes.number
};
type Props = PropTypes.InferProps<typeof AddPropsTypes>;
const Add: React.FC<Props> = ({ first = 1, second = 2 }) => {
return <div>{first + second}</div>;
};
Add.propTypes = AddPropsTypes;
export default Add;
Typescript 抱怨 first 和 second 可能是 'null' ts(2531),但它们具有默认参数值。
制作这些PropTypes.number.isRequired 显然会使警告消失,但我不希望它们是必需的。
我知道我可以在 jsx 中使用 <div>{(first || 1) + (second || 2)}</div> 消除此警告,但我不应该两次定义默认值。目前,我忽略了行上方的警告:
{/* lol https://github.com/Microsoft/TypeScript/issues/27552
// @ts-ignore */}
有什么方法可以定义PropTypes 或InferProps 以便它知道默认参数值?
【问题讨论】:
标签: javascript reactjs typescript react-proptypes