-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6543 from david-git-dev/main
09 - Typescript
- Loading branch information
Showing
2 changed files
with
189 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
/* | ||
* EJERCICIO: | ||
* Explora el concepto de herencia según tu lenguaje. Crea un ejemplo que | ||
* implemente una superclase Animal y un par de subclases Perro y Gato, | ||
* junto con una función que sirva para imprimir el sonido que emite cada Animal | ||
*/ | ||
class Animal { | ||
private _habitat: string; | ||
private _dieta: any[]; | ||
constructor(habitat: string, dieta: any[]) { | ||
this._habitat = habitat; | ||
this._dieta = dieta; | ||
} | ||
sonido() { | ||
return "sonido caracteristico de un animal"; | ||
} | ||
} | ||
class Perro extends Animal { | ||
private _nombre: string; | ||
private _especie: string; | ||
|
||
constructor(nombre: string, especie: string, habitat: string, dieta: any[]) { | ||
super(habitat, dieta); | ||
this._nombre = nombre; | ||
this._especie = especie; | ||
} | ||
sonido() { | ||
return "¡Guau guau!"; | ||
} | ||
} | ||
class Gato extends Animal { | ||
private _nombre: string; | ||
private _especie: string; | ||
|
||
constructor(nombre: string, especie: string, habitat: string, dieta: any[]) { | ||
super(habitat, dieta); | ||
this._nombre = nombre; | ||
this._especie = especie; | ||
} | ||
sonido() { | ||
return "¡Miau Miau!"; | ||
} | ||
} | ||
const chauchau = new Perro("canela", "canino", "casa", [ | ||
"croquetas", | ||
"pollo", | ||
"hueso", | ||
]); | ||
chauchau.sonido(); | ||
const naranja = new Gato("sr.tims", "felino", "casa", [ | ||
"croquetas", | ||
"pescado", | ||
"whiskas", | ||
]); | ||
naranja.sonido(); | ||
/* | ||
* | ||
* DIFICULTAD EXTRA (opcional): | ||
* Implementa la jerarquía de una empresa de desarrollo formada por Empleados que | ||
* pueden ser Gerentes, Gerentes de Proyectos o Programadores. | ||
* Cada empleado tiene un identificador y un nombre. | ||
* Dependiendo de su labor, tienen propiedades y funciones exclusivas de su | ||
* actividad, y almacenan los empleados a su cargo. | ||
*/ | ||
class Empleado{ | ||
private _identificador:BigInt | ||
private _nombre:string | ||
private _salario:BigInt | ||
private _fechaDeContratacion:Date | ||
constructor(identificador:BigInt,nombre:string,salario:BigInt){ | ||
this._identificador = identificador | ||
this._nombre = nombre | ||
this._salario = salario | ||
} | ||
} | ||
class Gerente extends Empleado{ | ||
private _usuariosACargo: Array<Empleado> | ||
constructor(identificador:BigInt,nombre:string,salario:BigInt,subordinados:Array<Empleado>){ | ||
super(identificador,nombre,salario) | ||
this._usuariosACargo = subordinados | ||
} | ||
visionEstrategica(){ | ||
|
||
} | ||
gestionDeRecursos(){} | ||
tomaDeDecisiones(){} | ||
supervisionGeneral(){} | ||
relacionesExternas(){} | ||
} | ||
class GerenteDeProyecto extends Empleado{ | ||
private _usuariosACargo: Array<Empleado>; | ||
private _proyectosAsignados:Array<Proyecto> | ||
constructor(identificador:BigInt,nombre:string,salario:BigInt,subordinados:Array<Empleado>,proyectos:Array<Proyecto>){ | ||
super(identificador,nombre,salario) | ||
this._usuariosACargo = subordinados | ||
this._proyectosAsignados = proyectos | ||
} | ||
planificacionDeProyectos(){} | ||
gestionDeEquipos(){} | ||
controlDePresupuestos(){} | ||
seguimientoYReportes(){} | ||
resolucionDeProblemas(){} | ||
} | ||
class Programador extends Empleado{ | ||
private _experiencia:number = 0; | ||
private _proyectosAsignados: Array<Proyecto>; | ||
constructor(identificador:BigInt,nombre:string,salario:BigInt,experiencia:number,proyectosAsignados:Proyecto[]){ | ||
super(identificador,nombre,salario) | ||
this._experiencia = experiencia | ||
this._proyectosAsignados = proyectosAsignados | ||
} | ||
escribirCodigo(){} | ||
depurarCodigo(){} | ||
colaborarEnProyectos(){} | ||
actualizarConocimientos(){} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
/* | ||
EJERCICIO: | ||
Explora el concepto de manejo de excepciones según tu lenguaje. | ||
Fuerza un error en tu código, captura el error, imprime dicho error | ||
y evita que el programa se detenga de manera inesperada. | ||
Prueba a dividir "10/0" o acceder a un índice no existente | ||
de un listado para intentar provocar un error. | ||
*/ | ||
function isNumeric(x:any) { | ||
return ["number", "bigint"].includes(typeof x); | ||
} | ||
|
||
function sum(...values:any[]) { | ||
if (!values.every(isNumeric)) { | ||
throw new TypeError("Can only add numbers"); | ||
} | ||
return values.reduce((a, b) => a + b); | ||
} | ||
|
||
console.log(sum(1, 2, 3)); // 6 | ||
try { | ||
sum("1", "2"); | ||
} catch (e) { | ||
if(e instanceof Error) | ||
console.error(e); // TypeError: Can only add numbers | ||
} | ||
/* | ||
DIFICULTAD EXTRA (opcional): | ||
Crea una función que sea capaz de procesar parámetros, pero que también | ||
pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que | ||
corresponderse con un tipo de excepción creada por nosotros de manera | ||
personalizada, y debe ser lanzada de manera manual) en caso de error. | ||
- Captura todas las excepciones desde el lugar donde llamas a la función. | ||
- Imprime el tipo de error. | ||
- Imprime si no se ha producido ningún error. | ||
- Imprime que la ejecución ha finalizado. | ||
*/ | ||
class IHateNineNumberError extends Error { | ||
constructor(mensaje: string) { | ||
super(mensaje); | ||
this.name = "IHateNineNumberError"; // Establece el nombre del error | ||
} | ||
} | ||
function threeErrorTypes(...args:any[]) { | ||
try { | ||
//const divByZero = 1n / 0n; error by zero RangeError | ||
if (args.some((num) => num === 9)) | ||
throw new IHateNineNumberError("dont use 9! number!!!"); | ||
//const res = args[1].content.json; ReferenceError | ||
//args[5] error index of bounce RangeError | ||
} catch (e) { | ||
if(e instanceof Error){ | ||
switch (e.name) { | ||
case "Error": | ||
console.error("Error general"); | ||
break; | ||
case "RangeError": | ||
console.error("Error de rango"); | ||
break; | ||
case "ReferenceError": | ||
console.error("Error de referencia"); | ||
break; | ||
default: | ||
console.error("Vaya esto es nuevo...", e); | ||
break; | ||
} | ||
} | ||
} finally { | ||
console.log("Operacion terminada"); | ||
} | ||
} | ||
threeErrorTypes(1, 9, "response", true); |