在typeScript 3.0支持defaultPoops函数之后,它又结合了接口make有线行为,当我们设置defaultPoops时,不允许接口params添加?标记,或者它会使defaultPoops失败,但通过文学思考,设置defaultPoops应该设置?在接口中标记,因为这意味着我有defaultPoops所以我允许客户设置或不设置参数,但是工具现在不这样做。任何人都可以解释为什么和所有行为都在defaultPoops打字稿中实现思考?
代码示例:
import React from "react"
interface Props {
name: string; // default props work
}
const Test = ({name}: Props) => {
return <div>Hello ${name.toUpperCase()}!</div>;
}
const defaultProps = { name: 'aa'};
Test.defaultProps = defaultProps;
export default Test
<Test/> // compiler OK
import React from "react"
interface Props {
name?: string; // default props don't work
}
const Test = ({name}: Props) => {
return <div>Hello ${name.toUpperCase()}!</div>;
}
const defaultProps = { name: 'aa'};
Test.defaultProps = defaultProps;
export default Test
<Test/> // compiler not OK, it tell you name possible is undefined
为什么不允许使用带接口的defaultProps?打字稿中的标记
默认道具对于组件不是可选的。它们总是被提供(通过React),因此当您访问props
时它们不是可选的。