Skip to content

Update why-typescript.md #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/why-typescript.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Por qué TypeScript
Hay dos objetivos principales de TypeScript:
* Proveer un *systema tipado opcional* para Javascript
* Proveer un *sistema tipado opcional* para Javascript
* Proveer características de futuras ediciones de Javascript a motores actuales de Javascript


Expand All @@ -10,15 +10,15 @@ El por qué de estos objetivos se explica a continuación

Puedes estar preguntandote "**Por qué agregar tipos a Javascript?**"

Los tipos han provado su habilidad para mejorar la calidad y comprensibilidad del código. Equipos grandes (Google, Microsoft, Facebook) han alcanzado esta conclusion multiples veces. Específicamente:
Los tipos han probado su habilidad para mejorar la calidad y comprensibilidad del código. Equipos grandes (Google, Microsoft, Facebook) han alcanzado esta conclusión multiples veces. Específicamente:

* Los tipos mejoran la velocidad cuando hay que refactorizar. *Es mejor que el compilador atrape los errores a que fallen cosas en tiempo de ejecución*
* Los tipos son una de las mejores formas de documentación que se puede tener. *La firma de una función es un teorema y el cuerpo de la función es la prueba*

Sin embargo, los tipos tienen una característica de ser innecesariamente ceremoniales. TypeScript es muy particular en cuanto a mantener la barrera de entrada lo más baja posible. Así es como lo hace:

### Javascript es Typescript
TypeScript provee seguridad al momento de compilar para tu codigo JavaScript. Esto no es gran sorpresa dado su nombre. La ventaja es que los tipos son completamente opcionales. Tu código JavaScript en archivos `.js` pueden ser renombrados a `.ts` y Typescript igual devolverá un archivo `.js` válido e equivalente al archivo `.js` original. Typescript es *intencionalmente* y estrictamente un superconjunto de Javascript con chequeo de tipado opcional.
TypeScript provee seguridad al momento de compilar para tu codigo JavaScript. Esto no es gran sorpresa dado su nombre. La ventaja es que los tipos son completamente opcionales. Tu código JavaScript en archivos `.js` pueden ser renombrados a `.ts` y Typescript igual devolverá un archivo `.js` válido y equivalente al archivo `.js` original. Typescript es *intencionalmente* y estrictamente un superconjunto de Javascript con chequeo de tipado opcional.

### Los tipos pueden ser implicitos
TypeScript intentará inferir la máxima información posible sobre el tipo, para brindar seguirdad de tipo con un costo mínimo de productividad durante el desarrollo de código. Por ejemplo, en el siguiente ejemplo TypeScript sabrá que `foo` es de tipo `numero` y devolverá un error en la segunda línea (error en inglés: traducido al español):
Expand All @@ -30,7 +30,7 @@ foo = '456'; // Error: cannot assign `string` to `number` (Error: no es posible
// Is foo a number or a string? (Es foo un número o una string?)
```

Esta inferencia del tipo esta bien motivada. Si haces cosas como las que se ven en este ejemplo, en tonces en el resto de tu código es imposible estar seguro sobre que `foo` es un `numero` o una `string`. Problemas de este tipo ocurren habitualmente en bases de código grandes y con múltiples archivos. Ahondaremos en las reglas sobre la inferencia de tipos más adelante.
Esta inferencia del tipo está bien motivada. Si haces cosas como las que se ven en este ejemplo, entonces en el resto de tu código es imposible estar seguro sobre que `foo` es un `numero` o una `string`. Problemas de este tipo ocurren habitualmente en bases de código grandes y con múltiples archivos. Ahondaremos en las reglas sobre la inferencia de tipos más adelante.

### Los tipos pueden ser explícitos
Como hemos mencionado previamente, TypeScript inferirá lo máximo que pueda en forma segura. Sin embargo, puedes usar anotaciones para:
Expand Down Expand Up @@ -72,7 +72,7 @@ yoAceptoPuntos2D(punto3D); // información extra okay
yoAceptoPuntos2D({ x: 0 }); // Error: falta la información `y`
```

### Errores de typo no previenen que JavaScript emita
### Errores de tipo no previenen que JavaScript emita
Para facilitar la migración de Javascript a Typescript, aunque hayan errores de compilación, por default Typescript emitirá *Javascript válido* de la mejor manera posible. Por ejemplo:

```ts
Expand Down Expand Up @@ -100,7 +100,7 @@ A modo de ejemplo sobre como podrías escribir tu propio archivo de declaracione
```ts
$('.genial').show(); // Error: cannot find name `$` (Error: no es posible encontrar el nombre `$`)
```
A modod de solución, *le puedes indicar a TypeScript* que existe algo llamado `$`:
A modo de solución, *le puedes indicar a TypeScript* que existe algo llamado `$`:
```ts
declare var $: any;
$('.genial').show(); // Ok!
Expand Down