为什么不允许带接口的defaultProps?在打字稿中标记

时间:2019-03-07 03:32:17

标签: reactjs typescript interface react-props

在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

1 个答案:

答案 0 :(得分:1)

  

为什么不允许带接口的defaultProps?在打字稿中标记

默认道具不是组件的可选 。它们始终由React提供(因此由React提供),因此在访问props时不是可选的。

更多

https://github.com/Microsoft/TypeScript/issues/30251

enter image description here