Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Melhor solução para class components com this.props.children

Resolvi postar sobre um assunto já marcado como solucionado aqui no forum porque a solução marcada nao é a ideal. Ao escrever o componente Botão (inicialmente como Class Component), eu e alguns colegas que perguntaram antes tivemos um erro que o props.children não é reconhecido (TS2339: Property 'children' does not exist on type 'Readonly<{}>'.). Provavelmente o professor rodou uma versão anterior do react que já inferia um props.children para o class component, porém aparentemente isto não ocorre mais.

A solução apontada aqui no forum seria tipar o botão como React.Component, porém isso não é boa prática e acaba com a vantagem do typescript de nos avisar quando usamos algo não esperado aqui.

Na verdade a solução aparece no final do curso, quando o professor refatora para function component ele teve que incluir o children na interface props. É a mesma solução que funciona aqui:

class Botao extends React.Component<{children?: React.ReactNode}> {

Assim nesse ponto é possível usar o tipo que já vem no React PropsWithChildren

class Botao extends React.Component<React.PropsWithChildren<{/*Outras props aqui*/}>> {

Enfim, minha sugestão é incluir uma nota na aula 4 parte 2. Se for só uma questão de configuração, também vale uma nota.

Versões no meu package.json:

    "@types/react": "^18.0.27",
    "@types/react-dom": "^18.0.10",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
1 resposta
solução!

Olá, Felipe.

Tudo bem?

Muito boa a sua sugestão, muito obrigado pelo feed back e por compartilhar com a gente.

Valeu mesmo :)