Почему defaultProps с интерфейсом не разрешены?отметить в машинописи - PullRequest
0 голосов
/ 07 марта 2019

После того, как typeScript 3.0 поддерживает функцию defaultPoops, но она сочетается с поведением проводного интерфейса, когда мы устанавливаем defaultPoops, параметры интерфейса добавлять нельзя?Отметьте, или это заставит 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

1 Ответ

1 голос
/ 07 марта 2019

Почему defaultProps с интерфейсом не разрешен? отметка в машинописи

Реквизиты по умолчанию не являются обязательными для компонента . Они всегда предоставляются (React) и поэтому не являются обязательными при доступе к props.

Подробнее

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

enter image description here

...