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

问题描述 投票:0回答:1

在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
reactjs typescript interface react-props
1个回答
1
投票

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

默认道具对于组件不是可选的。它们总是被提供(通过React),因此当您访问props时它们不是可选的。

More

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.