Skip to content

Commit 96e28b8

Browse files
committed
review changes
1 parent 632a692 commit 96e28b8

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

src/content/learn/typescript.md

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ As seguintes opções do compilador precisam ser definidas em seu `tsconfig.json
4444
## TypeScript com Componentes React {/*typescript-with-react-components*/}
4545

4646
<Note>
47+
4748
Todo arquivo contendo JSX deve utilizar a extensão de arquivo `.tsx`. Esta é uma extensão específica do TypeScript que indica ao TypeScript que este arquivo contém JSX.
4849

4950
</Note>
5051

51-
Escrever TypeScript com React é muito parecido com escrever JavaScript com React. A principal diferença ao trabalhar com um componente é que você pode especificar tipos para as `props` do seu componente. Estes tipos podem ser usados para checar sua exatidão e prover documentação incorporada em editores.
52+
Escrever TypeScript com React é muito parecido com escrever JavaScript com React. A principal diferença ao trabalhar com um componente é que você pode especificar tipos para as props do seu componente. Estes tipos podem ser usados para checar sua exatidão e prover documentação incorporada em editores.
5253

53-
Utilizando o [componente `MyButton`](/learn#components) do Guia de [Quick Start](/learn), podemos adicionar um tipo descrevendo o `title` para o botão.
54+
Utilizando o [componente `MyButton`](/learn#components) do Guia de [Início rápido](/learn), podemos adicionar um tipo descrevendo o `title` para o botão.
5455

5556
<Sandpack>
5657

@@ -79,11 +80,11 @@ export default App = AppTSX;
7980

8081
<Note>
8182

82-
Estes trechos de código conseguem lidar com código TypeScript, porém eles não executarão nenhuma checagem de tipos. Isso significa que você pode alterar este trecho de código para fins de aprendizado, mas não receberá nenhum erro ou warning. para ter uma checagem de tipos, você pode usar o [TypeScript Playground](https://www.typescriptlang.org/play) ou utilizar uma ferramenta online de sandbox mais completa.
83+
Estes trechos de código conseguem lidar com código TypeScript, porém eles não executarão nenhuma checagem de tipos. Isso significa que você pode alterar este trecho de código para fins de aprendizado, mas não receberá nenhum erro ou _warnings_. Para ter uma checagem de tipos, você pode usar o [TypeScript Playground](https://www.typescriptlang.org/play) ou utilizar uma ferramenta online de sandbox mais completa.
8384

8485
</Note>
8586

86-
Esta sintaxe em uma mesma linha é a forma mais simples de fornecer tipos para um componente, no entanto a medida que se tem alguns campos a mais para serem descritos, as coisas podem ficar complicadas. Ao invés disso, você pode usar um `type` ou uma `interface` para descrever as props de um componente:
87+
Esta sintaxe em uma mesma linha é a forma mais simples de fornecer tipos para um componente, no entanto à medida que se tem alguns campos a mais para serem descritos, as coisas podem ficar complicadas. Ao invés disso, você pode usar uma `interface` ou um `type` para descrever as props de um componente:
8788

8889
<Sandpack>
8990

@@ -136,7 +137,7 @@ O [hook `useState`](/reference/react/useState) irá reutilizar o valor passado c
136137
const [enabled, setEnabled] = useState(false);
137138
```
138139

139-
Atribuirá o tipo `boolean` à `enabled` e `setEnable` será uma função que ou aceita um `boolean` como argumento ou uma função que retorna `boolean`. Se você deseja informar explicitamente um tipo para o state, você pode informat um tipo como argumento à chamada do `useState`:
140+
Atribuirá o tipo `boolean` à `enabled` e `setEnable` será uma função que ou aceita um `boolean` como argumento ou uma função que retorna `boolean`. Se você deseja informar explicitamente um tipo para o state, você pode informar um tipo como argumento à chamada do `useState`:
140141

141142
```ts
142143
// Explicitamente define o tipo como "boolean"
@@ -151,7 +152,7 @@ type Status = "ocioso" | "carregando" | "sucesso" | "erro";
151152
const [status, setStatus] = useState<Status>("ocioso");
152153
```
153154

154-
Ou, como recomendado em [Princípios para estruturação de estado](/learn/choosing-the-state-structure#principles-for-structuring-state), você pode agrupar estados relacionados em um objeto descrevendo suas diferentes possibilidades através de tipos objetos:
155+
Ou, como recomendado em [Princípios para estruturar estados](/learn/choosing-the-state-structure#principles-for-structuring-state), você pode agrupar _states_ relacionados em um objeto descrevendo suas diferentes possibilidades através de tipos objetos:
155156

156157
```ts
157158
type RequestState =
@@ -165,7 +166,7 @@ const [requestState, setRequestState] = useState<RequestState>({ status: 'ocioso
165166

166167
### `useReducer` {/*typing-usereducer*/}
167168

168-
O [hook `useReducer`](/reference/react/useReducer) é um hook mais complexo que recebe uma função _reducer_ e um _state_ inicial. os tipos para a função _reducer_ são inferidos a partir do _state_ inicial. Você pode opcionalmente informar um tipo como argumendo para a chamada de `useReducer` para informar um tipo para o _state_, mas é frequentemente melhor, ao invés disso, definir o tipo no _state_ inicial:
169+
O [hook `useReducer`](/reference/react/useReducer) é um hook mais complexo que recebe uma função _reducer_ e um _state_ inicial. Os tipos para a função _reducer_ são inferidos a partir do _state_ inicial. Você pode opcionalmente informar um tipo como argumendo para a chamada de `useReducer` para informar um tipo para o _state_, mas é frequentemente melhor definir o tipo no _state_ inicial:
169170

170171
<Sandpack>
171172

@@ -219,6 +220,7 @@ export default App = AppTSX;
219220

220221
</Sandpack>
221222

223+
222224
Estamos usando TypeScript em alguns lugares importantes:
223225

224226
- `interface State` descreve a forma do _state_ do _reducer_.
@@ -282,9 +284,9 @@ export default App = AppTSX;
282284

283285
</Sandpack>
284286

285-
Essa técnica funciona quando você tem um valor padrão que faz sentido, mas há casos onde isso não acontece, como por exemplo ao utilizar `null` como um valor padrão, o que faz todo o sentido. Portanto, para permitir que o sistema de tipos compreenda o seu código, você precisa explicitamente definir `ContextShape | null` na chamada de `createContext`.
287+
Essa técnica funciona quando você tem um valor padrão que faz sentido, mas há casos onde isso não acontece, e nesses casos utilizar `null` como um valor padrão pode parecer razoável. Porém, para permitir que o sistema de tipos compreenda o seu código, você precisa explicitamente definir `ContextShape | null` na chamada de `createContext`.
286288

287-
Isso causa um problema onde é necessário eliminar o `| null` no tipo onde se consome o contexto. A recomendação é fazer com que o hook faça uma checagem de sua existência em tempo de execução e cause um erro caso não exista.
289+
Isso causa um problema onde é necessário eliminar o `| null` no tipo onde se consome o contexto. A recomendação é fazer com que o hook faça uma checagem de sua existência em tempo de execução e cause um erro caso não exista:
288290

289291
```js {5, 16-20}
290292
import { createContext, useContext, useState, useMemo } from 'react';
@@ -327,13 +329,14 @@ function MyComponent() {
327329

328330
### `useMemo` {/*typing-usememo*/}
329331

330-
O [hook `useMemo`](/reference/react/useMemo) criam/reacessam um valor memoizado de uma chamada de função, executando-a novamente apenas quando as dependências passadas como segundo parâmetro mudarem. O resultado da chamada do hook é inferido pelo valor retornado pela função do primeiro parâmetro. Você pode ser mais explícito informando um tipo como argumento para o hook.
332+
O [hook `useMemo`](/reference/react/useMemo) cria/reacessa um valor memoizado de uma chamada de função, executando-a novamente apenas quando as dependências passadas como segundo parâmetro mudarem. O resultado da chamada do hook é inferido pelo valor retornado pela função do primeiro parâmetro. Você pode ser mais explícito informando um tipo como argumento para o hook.
331333

332334
```ts
333335
// O tipo de visibleTodos é inferido pelo retorno do valor de filterTodos
334336
const visibleTodos = useMemo(() => filterTodos(todos, tab), [todos, tab]);
335337
```
336338

339+
337340
### `useCallback` {/*typing-usecallback*/}
338341

339342
O [`useCallback`](/reference/react/useCallback) fornece uma referência estável à uma função, desde que as dependências passadas no segundo parâmetro sejam as mesmas. Assim como o `useMemo`, o tipo da função é inferido a partir do valor de retorno da função do primeiro parâmetro, e você pode ser mais explícito fornecendo um tipo como argumento ao hook.
@@ -347,7 +350,7 @@ const handleClick = useCallback(() => {
347350

348351
Ao trabalhar no _strict mode_ do TypeScript, o `useCallback` requer a adição de tipos para os parâmetros da callback. Isso ocorre porque o tipo da callback é inferido a partir do valor de retorno da função e, sem parâmetros, o tipo não pode ser totalmente compreendido.
349352

350-
Dependendo de suas preferências de estilo de código, você pode usar as funções `EventHandler` dos tipos do React para fornecer o tipo do manipulador de eventos ao mesmo tempo em que define a callback:
353+
Dependendo de suas preferências de estilo de código, você pode usar as funções `*EventHandler` dos tipos do React para fornecer o tipo do manipulador de eventos ao mesmo tempo em que define a callback:
351354

352355
```ts
353356
import { useState, useCallback } from 'react';
@@ -421,7 +424,7 @@ interface ModalRendererProps {
421424
}
422425
```
423426

424-
Essa é uma definição bem ampla de _children_. A segunda é usar o tipo `React.ReactElement`, que corresponde apenas à elementos JSX e não tipos primitivos do JavaScript, como strings ou numbers:
427+
Essa é uma definição bem ampla de _children_. A segunda é usar o tipo `React.ReactElement`, que corresponde apenas a elementos JSX e não tipos primitivos do JavaScript, como strings ou numbers:
425428

426429
```ts
427430
interface ModalRendererProps {
@@ -430,9 +433,9 @@ interface ModalRendererProps {
430433
}
431434
```
432435

433-
Note, você não pode usar o TypeScript para descrever que os filhos são de um determinado tipo de elemento JSX, portanto, não é possível usar o sistema de tipos para descrever um componente que só aceita filhos `<li>`.
436+
Note que você não pode usar o TypeScript para descrever que os filhos são de um determinado tipo de elemento JSX, portanto, não é possível usar o sistema de tipos para descrever um componente que só aceita filhos `<li>`.
434437

435-
Você pode ver todos os exemplos de `React.ReactNode` e `React.ReactElement` com checagem de tipos com [este playground do TypeScript](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgIilQ3wChSB6CxYmAOmXRgDkIATJOdNJMGAZzgwAFpxAR+8YADswAVwGkZMJFEzpOjDKw4AFHGEEBvUnDhphwADZsi0gFw0mDWjqQBuUgF9yaCNMlENzgAXjgACjADfkctFnYkfQhDAEpQgD44AB42YAA3dKMo5P46C2tbJGkvLIpcgt9-QLi3AEEwMFCItJDMrPTTbIQ3dKywdIB5aU4kKyQQKpha8drhhIGzLLWODbNs3b3s8YAxKBQAcwXpAThMaGWDvbH0gFloGbmrgQfBzYpd1YjQZbEYARkB6zMwO2SHSAAlZlYIBCdtCRkZpHIrFYahQYQD8UYYFA5EhcfjyGYqHAXnJAsIUHlOOUbHYhMIIHJzsI0Qk4P9SLUBuRqXEXEwAKKfRZcNA8PiCfxWACecAAUgBlAAacFm80W-CU11U6h4TgwUv11yShjgJjMLMqDnN9Dilq+nh8pD8AXgCHdMrCkWisVoAet0R6fXqhWKhjKllZVVxMcavpd4Zg7U6Qaj+2hmdG4zeRF10uu-Aeq0LBfLMEe-V+T2L7zLVu+FBWLdLeq+lc7DYFf39deFVOotMCACNOCh1dq219a+30uC8YWoZsRyuEdjkevR8uvoVMdjyTWt4WiSSydXD4NqZP4AymeZE072ZzuUeZQKheQgA).
438+
Você pode ver todos os exemplos de ambos `React.ReactNode` e `React.ReactElement` com checagem de tipos com [este playground do TypeScript](https://www.typescriptlang.org/play?#code/JYWwDg9gTgLgBAJQKYEMDG8BmUIjgIilQ3wChSB6CxYmAOmXRgDkIATJOdNJMGAZzgwAFpxAR+8YADswAVwGkZMJFEzpOjDKw4AFHGEEBvUnDhphwADZsi0gFw0mDWjqQBuUgF9yaCNMlENzgAXjgACjADfkctFnYkfQhDAEpQgD44AB42YAA3dKMo5P46C2tbJGkvLIpcgt9-QLi3AEEwMFCItJDMrPTTbIQ3dKywdIB5aU4kKyQQKpha8drhhIGzLLWODbNs3b3s8YAxKBQAcwXpAThMaGWDvbH0gFloGbmrgQfBzYpd1YjQZbEYARkB6zMwO2SHSAAlZlYIBCdtCRkZpHIrFYahQYQD8UYYFA5EhcfjyGYqHAXnJAsIUHlOOUbHYhMIIHJzsI0Qk4P9SLUBuRqXEXEwAKKfRZcNA8PiCfxWACecAAUgBlAAacFm80W-CU11U6h4TgwUv11yShjgJjMLMqDnN9Dilq+nh8pD8AXgCHdMrCkWisVoAet0R6fXqhWKhjKllZVVxMcavpd4Zg7U6Qaj+2hmdG4zeRF10uu-Aeq0LBfLMEe-V+T2L7zLVu+FBWLdLeq+lc7DYFf39deFVOotMCACNOCh1dq219a+30uC8YWoZsRyuEdjkevR8uvoVMdjyTWt4WiSSydXD4NqZP4AymeZE072ZzuUeZQKheQgA).
436439

437440
### Props de Estilo {/*typing-style-props*/}
438441

@@ -447,7 +450,7 @@ interface MyComponentProps {
447450
## Conteúdo adicional {/*further-learning*/}
448451

449452
Este guia abordou os conceitos básicos do uso do TypeScript com React, mas há muito mais para aprender.
450-
As páginas individuais de cada API nas documentação pode conter uma informação mais detalhada sobre como usá-las com o TypeScript.
453+
As páginas individuais de cada API nas documentação podem conter uma informação mais detalhada sobre como usá-las com o TypeScript.
451454

452455
Recomendamos as seguintes fontes
453456

0 commit comments

Comments
 (0)