From 68d301b4eb87f64c1637cad11fc9a99adec79743 Mon Sep 17 00:00:00 2001 From: sebastiandotdev Date: Sat, 26 Apr 2025 21:13:45 -0500 Subject: [PATCH 1/2] feat(TypeScript): learn use `ThisType` --- TypeScript/deno.json | 3 +++ TypeScript/main.ts | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/TypeScript/deno.json b/TypeScript/deno.json index 90f6af3..f4c2d3f 100644 --- a/TypeScript/deno.json +++ b/TypeScript/deno.json @@ -1,5 +1,8 @@ { "lock": false, + "compilerOptions": { + "noImplicitThis": true + }, "imports": { "@std/assert": "jsr:@std/assert" } diff --git a/TypeScript/main.ts b/TypeScript/main.ts index 34e4a7d..f442196 100644 --- a/TypeScript/main.ts +++ b/TypeScript/main.ts @@ -1,3 +1,48 @@ +/*************************************************************** ThisType **************************************************************/ +/** + * Ejemplo de uso de `ThisType` en TypeScript para definir el tipo de `this` en métodos de un objeto. + * + * `ThisType` es una utilidad de TypeScript que permite especificar explícitamente el tipo del contexto `this` + * dentro de los métodos de un objeto. Es útil en objetos literales, mixins, o frameworks como Vue.js, donde + * los métodos necesitan acceder a otras propiedades o métodos del mismo objeto. + * + * **Requisitos**: + * - La opción `--noImplicitThis` debe estar habilitada en `tsconfig.json` para evitar que `this` sea inferido como `any`. + */ +interface Counter { + /** El valor actual del contador */ + amount: number; + /** Incrementa el valor del contador en 1 */ + inc: () => void; + /** Decrementa el valor del contador en 1 */ + dec: () => void; +} + +/** + * Tipo que combina la interfaz `Counter` con `ThisType` para tipar el contexto `this`. + */ +type CounterWithThis = Counter & ThisType; + +/** + * Implementación del objeto contador. + * Los métodos `inc` y `dec` usan `this` para modificar la propiedad `amount`. + * Gracias a `ThisType`, TypeScript valida correctamente el acceso a `amount`. + */ +const counter: CounterWithThis = { + amount: 0, + inc() { + this.amount++; + }, + dec() { + this.amount--; + }, +}; + +counter.inc(); +counter.dec(); +console.log(counter.amount); +/***************************************************************** End ThisType **************************************************************/ + function main() { /** Here we will write new things learned from TypeScript with basic examples */ } From 684b7709127123f679d32aa4aa65f97054cfd4dc Mon Sep 17 00:00:00 2001 From: sebastiandotdev Date: Sat, 26 Apr 2025 21:16:32 -0500 Subject: [PATCH 2/2] fix: formatter code --- TypeScript/main.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TypeScript/main.ts b/TypeScript/main.ts index f442196..ecd27bc 100644 --- a/TypeScript/main.ts +++ b/TypeScript/main.ts @@ -1,11 +1,11 @@ /*************************************************************** ThisType **************************************************************/ /** * Ejemplo de uso de `ThisType` en TypeScript para definir el tipo de `this` en métodos de un objeto. - * + * * `ThisType` es una utilidad de TypeScript que permite especificar explícitamente el tipo del contexto `this` * dentro de los métodos de un objeto. Es útil en objetos literales, mixins, o frameworks como Vue.js, donde * los métodos necesitan acceder a otras propiedades o métodos del mismo objeto. - * + * * **Requisitos**: * - La opción `--noImplicitThis` debe estar habilitada en `tsconfig.json` para evitar que `this` sea inferido como `any`. */