Javascript 如何删除对象可能是';空';使用PropTypes.InferreProps和默认参数时出现TS2531警告?
我有一个简单的React组件,它将两个数字相加。它是用TypeScript编写的,使用@types/prop-typesJavascript 如何删除对象可能是';空';使用PropTypes.InferreProps和默认参数时出现TS2531警告?,javascript,reactjs,typescript,react-proptypes,Javascript,Reactjs,Typescript,React Proptypes,我有一个简单的React组件,它将两个数字相加。它是用TypeScript编写的,使用@types/prop-types 从“React”导入React; 从“道具类型”导入道具类型; 常数AddPropsTypes={ 第一:PropTypes.number, 第二:PropTypes.number }; 类型Props=PropTypes.InferProps; 常量Add:React.FC=({first=1,second=2})=>{ 返回{first+second}; }; Add.p
从“React”导入React;
从“道具类型”导入道具类型;
常数AddPropsTypes={
第一:PropTypes.number,
第二:PropTypes.number
};
类型Props=PropTypes.InferProps;
常量Add:React.FC=({first=1,second=2})=>{
返回{first+second};
};
Add.propTypes=AddPropsTypes;
导出默认添加;
Typescript抱怨说,first
和second
可能是'null'ts(2531),但它们有默认参数值
制作这些PropTypes.number.isRequired
显然会使警告消失,但我不希望它们是必需的
我知道我可以在jsx中使用{(第一个| | 1)+(第二个| | 2)}
消除此警告,但我不必两次定义默认值。目前,我忽略了线上方的以下警告:
{/*lolhttps://github.com/Microsoft/TypeScript/issues/27552
//@ts ignore*/}
有没有办法定义
PropTypes
或InferProps
以便它知道默认参数值?使用非空断言运算符代码>
首先+第二代码>一个问题我发现没有为数组函数参数定义类型
const Add: React.FC<Props> = ({ first = 1, second = 2 }) => {
return <div>{first + second}</div>;
};
const Add:React.FC=({first=1,second=2})=>{
返回{first+second};
};
怎么样
const Add: React.FC<Props> = ({ first = 1, second = 2 }: Props) => {
return <div>{first + second}</div>;
};
const Add:React.FC=({first=1,second=2}:Props)=>{
返回{first+second};
};
或
const Add:React.FC=({first=1,second=2}:{
第一:PropTypes.number,
第二:PropTypes.number
}) => {
返回{first+second};
};
谢谢!我必须关闭“@typescript eslint/no non-null assertion”规则,但我完全不介意。
const Add: React.FC<Props> = ({ first = 1, second = 2 }: {
first: PropTypes.number,
second: PropTypes.number
}) => {
return <div>{first + second}</div>;
};