Skip to content
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

Mi clase Contenedor, Iván Verduzco. #6

Open
wants to merge 1 commit into
base: main
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
108 changes: 102 additions & 6 deletions Clase8/exercises.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
//Escoge los tipos de datos de las siguientes variables:
let edad = 20;
let nombre = "Juanito";
let nombre:string = "Juanito";
let producto = {
id: 20,
nombre: "Camiseta",
Expand All @@ -9,14 +8,30 @@ let producto = {
};

//Crea la clase para esta instancia:
let soldadito = new Juguete();
class Juguet {
private _precio?: number;
private _color?: string;

set precio(_precio: number){
this._precio = _precio;
}

get color(){
if(this._color) {
return this._color;
}
return "";
}
}

let soldadito = new Juguet();
soldadito.precio = 20;
console.log(soldadito.color);

//Crea las definiciones de las siguientes funciones:
type DefinicionDeletrear = ;
type DefinicionContar = ;
type DefinicionImprimir = ;
type DefinicionDeletrear = (palabra:string) => string[];
type DefinicionContar = (palabra:string) => number;
type DefinicionImprimir = (mensaje:string | number) => number | string;

interface MisFuciones {
deletrear: DefinicionDeletrear;
Expand All @@ -40,6 +55,13 @@ class MiClase implements MisFuciones {

//Crea la interface correcta para esta clase, el constructor no está declarado en la interface

interface Lenguage<T extends number, U extends string> {
cantidadCaracteres: T;
caracteres: U[];

printNCaracteres(n: T): void;
}

class LenguajeIngles implements Lenguaje<number, string> {
cantidadCaracteres: number;
caracteres: string[];
Expand All @@ -59,11 +81,25 @@ class LenguajeIngles implements Lenguaje<number, string> {
//Crea UNA función que te permita obtener la longitud de una cadena de caracteres o
//de algún arreglo que se le pase, solo admite arreglos o strings,usando Generics

function longitud<T extends string | Array<any>>(valor:T){
return valor.length;
}

//Crea UNA función que reciba un dato de tipo boolean o string o number y
//dependiendo del tipo imprima en consola "booleano" "cadena de caracteres" o "número"
//Respectivamente, usando generics;
//Nota: typeof nos regresa el tipo de dato de una variable

function obtenerTipo<T extends boolean | number | string >(dato: T){
if(typeof dato === 'string'){
console.log('Cadena de caracteres');
} else if(typeof dato === 'boolean'){
console.log('booleano');
} else{
console.log('Número');
}
}

//Crear una clase Contenedor, que te permita: guardar, leer e imprimir todos sus items
//esta clase debe trabajar con un arreglo de items, estos items pueden ser de las siguientes
//interfaces: Juguete, Ropa, Botella o Libro
Expand All @@ -73,3 +109,63 @@ class LenguajeIngles implements Lenguaje<number, string> {
//La clase debe implementar generics class Contenedor<T>{}
//para instanciarla: new Contenedor<Juguete | Ropa | Botella | Libro>();
//y probarla
type tipoJuguete = "Niño" | "Niña";
type tipoRopa = "Casual" | "Formal"

interface JugueteI{
nombreJuguete:string;
costo: number;
tipo: tipoJuguete;
}

interface Ropa{
nombreRopa: string;
costo: number;
tipo: tipoRopa;
}

interface Botella{
nombreBotella: string;
costo: number;
volumen: number;
}

interface Libro{
titulo: string;
numPaginas: number;
costo: number;
}

class Contenedor <T>{

items:T[] = [];

Guardar(nuevoItem: T){
this.items.push(nuevoItem);
}
Leer(i: number){
console.log(this.items[i]);
}
Imprimir(){
for (let i = 0; i < this.items.length; i++) {
console.log(this.items[i]);
}
}
}

let libro1:Libro = {titulo: "TheBest", numPaginas:560, costo: 200};
let libro2:Libro = {titulo: "Bill", numPaginas:320, costo: 450};
let juguete1:JugueteI = {nombreJuguete: "Buzz", costo: 499, tipo: "Niño"};
let botella1:Botella = {nombreBotella: "Natural", costo: 49, volumen: 499}
let ropa1:Ropa = {nombreRopa: "blusa", costo: 299, tipo: "Casual"}

let productos = new Contenedor<JugueteI | Ropa | Botella | Libro>();
productos.Guardar(libro1);
productos.Guardar(juguete1);
productos.Guardar(ropa1)
productos.Guardar(botella1);
console.log("Función leer con 1")
productos.Leer(1);
productos.Guardar(libro2);
console.log("Función imprimir")
productos.Imprimir();