Skip to content

Commit 533e08e

Browse files
author
Lauro Silva
committed
finished section 4 of advanced cheat sheet
1 parent 7f6d360 commit 533e08e

File tree

2 files changed

+93
-3
lines changed

2 files changed

+93
-3
lines changed

AVANZADO.md

+90
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ La mejor herramienta para crear bibliotecas React + TS en este momento es [`tsdx
8181
- [Linting](#linting)
8282
- [Trabajar con bibliotecas que no son de TypeScript (escribe tu propio index.d.ts)](#trabajar-con-bibliotecas-que-no-son-de-typeScript-escribe-tu-propio-indexdts)
8383
- [Sección 4: @types/react y @types/react-dom APIs](#sección-4-typesreact-y-typesreact-dom-apis)
84+
- [Agregando atributos no estandarizados](#agregando-atributos-no-estandarizados)
85+
- [@types/react-dom](#types-react-dom)
8486

8587
</details>
8688

@@ -1342,3 +1344,91 @@ declare module "de-indent" {
13421344
</details>
13431345
13441346
# Sección 4: @types/react y @types/react-dom APIs
1347+
1348+
Los tipings `@ types` exportan tanto los tipos "públicos" destinados a su uso como los tipos "privados" que son para uso interno.
1349+
1350+
Consulte la [Hoja de referencia de React TypeScript de SaltyCrane](https://github.com/saltycrane/typescript-cheatsheet) para obtener una buena referencia completa autogenerada.
1351+
1352+
## `@types/react`
1353+
1354+
[Enlace a `.d.ts`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts)
1355+
1356+
**Namespace: React**
1357+
1358+
Interfaces y tipos más utilizados:
1359+
1360+
- `ReactNode` - cualquier cosa que sea renderizabl*dentro* de JSX, ¡esto NO es lo mismo que lo que puede representar un componente!
1361+
- `Component` - clase base de todos los componentes basados en clases
1362+
- `PureComponent` - clase base para todos los componentes optimizados basados en clases
1363+
- `FC`, `FunctionComponent` - Una interfaz completa para componentes de funciones, a menudo utilizada para escribir componentes externos en lugar de escribir los tuyos
1364+
- `CSSProperties` - usado para escribir objetos de estilo
1365+
- all events: se usa para escribir controladores de eventos
1366+
- all event handlers: se usa para escribir controladores de eventos
1367+
- all consts: `Children`, `Fragment`, ... son todos públicos y reflejan el espacio de nombres React runtime
1368+
1369+
No se usa comúnmente pero es bueno saberlo
1370+
1371+
- `Ref` - solía escribirse `innerRef`
1372+
- `ElementType` - utilizado para componentes de orden superior u operaciones en componentes
1373+
- `ComponentType` - utilizado para componentes de orden superior donde no se trata específicamente con los componentes intrínsecos
1374+
- `ReactPortal` - se usa si necesita específicamente escribir un accesorio como portal, de lo contrario es parte de `ReactNode`
1375+
- `ComponentClass` - Una interfaz completa para la función de constructor producida de una declaración de clase que extiende `Componente`, a menudo utilizada para escribir componentes externos en lugar de escribirla.
1376+
- `JSXElementConstructor` - todo lo que TypeScript considere válido puede entrar en la etiqueta de apertura de una expresión JSX
1377+
- `ComponentProps` - props de un componente
1378+
- `ComponentPropsWithRef` - props de un componente donde una clase se base deun componentn `ref` prop con su propia instancia de type
1379+
- `ComponentPropsWithoutRef` - accesorios de un componente sin el apoyo de `ref`
1380+
- all methods: `createElement`, `cloneElement`, ... son todos públicos y reflejan la API de tiempo de ejecución de React
1381+
1382+
[@Nota de Ferdaber](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet/pull/69): Desaliento el uso de la mayoría de los tipos `... Element` debido a lo desconocido de `JSX .Element`. Casi siempre debes suponer que cualquier cosa producida por `React.createElement` es el tipo base `React.ReactElement`.
1383+
1384+
**Namespace: JSX**
1385+
1386+
- `Element` - El tipo de cualquier expresión JSX
1387+
- `LibraryManagedAttributes` - Especifica otros lugares donde los elementos JSX pueden declarar e inicializar tipos de _props_. Se usa para resolver `defaultProps` y `propTypes` estáticos con el tipo de accesorios internos de un componente.
1388+
- `IntrinsicElements` - todos los componentes integrados posibles que se pueden escribir como un type en minúscula en JSX
1389+
1390+
No se usa comúnmente pero es bueno saberlo
1391+
1392+
- `IntrinsicAttributes` conjunto de atributos que admiten todos los `IntrinsicElements` ... básicamente solo `key`.
1393+
- `ElementChildrenAttribute` nombre de la propiedad que TS examina para determinar qué tipos de _children_ admite un componente. Básicamente la propiedad `children`
1394+
- `ElementAttributesProperty` nombre de la propiedad que TS observa para descubrir qué atributos admite un componente. Básicamente la propiedad `props` (para una instancia de clase)
1395+
1396+
**No usar Interno/Desaprobado**
1397+
1398+
Cualquier cosa que no esté en la lista anterior se considera de tipo interno y no público. Si no está seguro, puedes consultar la fuente de `@types/react`. Los tipos se anotan en consecuencia.
1399+
1400+
- `SFCElement`
1401+
- `SFC`
1402+
- `ComponentState`
1403+
- `LegacyRef`
1404+
- `StatelessComponent`
1405+
- `ReactType`
1406+
1407+
### Agregando Atributos No Estandarizados
1408+
1409+
Los atributos permitidos en los componentes del host como `button` o`img` siguen el
1410+
Estándar de vida HTML. Nuevas características que aún no forman parte de la especificación
1411+
o solo son implementados por ciertos navegadores, por lo tanto, causarán un error de tipo. Si
1412+
tu específicamente escribes código para estos navegadores usa [módulo de aumento](https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation) para seguir comprobando el tipo de componentes sin tener que
1413+
usar `any` o`@ ts-ignore`.
1414+
1415+
En este ejemplo, agregaremos el atributo [`loading`](https://www.chromestatus.com/feature/5645767347798016) que agrega soporte para [lazy-loading](https://web.dev/native-lazy-cargando) imágenes en Chrome:
1416+
1417+
```ts
1418+
// react-unstable-attributes.d.ts
1419+
import "react";
1420+
1421+
declare module "react" {
1422+
interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
1423+
loading?: "auto" | "eager" | "lazy";
1424+
}
1425+
}
1426+
```
1427+
1428+
## @types/react-dom
1429+
1430+
Para ser escrito
1431+
1432+
# Mi pregunta no se responde aquí!
1433+
1434+
- [Abre un issue](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet/issues/new).

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424

2525
---
2626

27-
:wave: Este repositorio es mantenido por [@laurosilvacom](https://twitter.com/laurosilvacom). ¡Estoy tan feliz de que quieras probar TypeScript con React! Si ve que algo anda mal o falta, ¡presente un [_Issue_](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet-es/issues/new)! :+1:
28-
29-
El repositorio original se puede encontrar [aquí](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet) (inglés).
27+
:wave: Este repositorio es mantenido por [@laurosilvacom](https://twitter.com/laurosilvacom). ¡Estoy tan feliz de que quieras probar TypeScript con React! Si ves que algo esta mal, ¡abre un [_Issue_](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet-es/issues/new)! :+1: El repositorio original se puede encontrar [aquí](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet) (inglés).
3028

3129
---
3230

31+
</div>
32+
3333
**¿Quieres contribuir ayudando a traducir estos recursos?**
3434

3535
**¡Increíble!** Primero, revise este _[issue](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet-es/issues/2)_ que describe el progreso y lea la [Guía de Estilo](https://github.com/typescript-cheatsheets/react-typescript-cheatsheet-es/blob/master/GUIA.md) para traducir.

0 commit comments

Comments
 (0)