Skip to content

Commit

Permalink
Merge pull request #6543 from david-git-dev/main
Browse files Browse the repository at this point in the history
09 - Typescript
  • Loading branch information
Roswell468 authored Oct 12, 2024
2 parents f671c80 + 5bce9a0 commit 69ea830
Show file tree
Hide file tree
Showing 2 changed files with 189 additions and 0 deletions.
117 changes: 117 additions & 0 deletions Roadmap/09 - HERENCIA/typescript/david-git-dev.ts
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(){}
}

72 changes: 72 additions & 0 deletions Roadmap/10 - EXCEPCIONES/typescript/david-git-dev.ts
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);

0 comments on commit 69ea830

Please sign in to comment.