You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: AVANZADO.md
+90
Original file line number
Diff line number
Diff line change
@@ -81,6 +81,8 @@ La mejor herramienta para crear bibliotecas React + TS en este momento es [`tsdx
81
81
-[Linting](#linting)
82
82
-[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)
83
83
-[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)
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:
Copy file name to clipboardexpand all lines: README.md
+3-3
Original file line number
Diff line number
Diff line change
@@ -24,12 +24,12 @@
24
24
25
25
---
26
26
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).
30
28
31
29
---
32
30
31
+
</div>
32
+
33
33
**¿Quieres contribuir ayudando a traducir estos recursos?**
34
34
35
35
**¡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