在typeScript 3.0支持defaultPoops功能之后,但它与接口make有线行为结合在一起,当我们设置defaultPoops时,不允许添加接口参数?标记,否则会使defaultPoops失败,但是从文学的角度来看,设置defaultPoops应该设置?在界面中标记,因为这意味着我有defaultPoops,因此我可以允许客户设置参数或不设置参数,但是该工具现在不那样做。任何人都可以解释为什么并且所有行为都在typescript的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
答案 0 :(得分:1)
为什么不允许带接口的defaultProps?在打字稿中标记
默认道具不是组件的可选 。它们始终由React提供(因此由React提供),因此在访问props
时不是可选的。