Clases

4/28
Recursos
Transcripción

Dentro de TypeScript podemos realizar programación orientada a objetos y como su nombre lo dice vamos a programar objetos, pero para generar dichos objetos primero debemos crear su plantilla base que recibe el nombre de clase.

Una clase está integrada por propiedades y funciones, estas pueden ser privadas, públicas o protected.

A la variable que le asignamos el valor de un objeto debemos indicarle que su tipo de dato es igual a la clase.

Una característica de la programación orientada a objetos es que podemos crear clases padre que hereden sus propiedades y funciones a una clase hijo, esto es la herencia y dentro de TypeScript se representa con la palabra extends.

Aportes 58

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

no lo se rick parece java XD

Sintaxis General de una clase

class Nombre{
  //atributos
  nivelAcceso nombre: tipoDato;

  //constructor(nombreAtributo: tipoDato){
    this.nombreAtributo =  nombre
  }

  //metodos o comportamientos
  getAtributo(){
   return this.nombreAtributo;
  }

  setAtributo(nombre: tipoDato){
   this.nombreAtributo = nombre;
  }
}

Con la palabra reservada extends heredamos una clase a otra.
Con la palabra reservada super accedemos a los atributos y métodos de la clase padre para utilizarlos en la clase hija.

Alan, primero quiero decirte que explicas súper bien y respecto a tu pregunta creo que la implementación de TypeScript depende mucho del tamaño del proyecto en el que se trabaje. Para un sistema muy grande y robusto creo que la mejor opción es implementar TypeScript ya que nos ayudaría a evitar errores dentro de nuestro programa y al mismo tiempo nos haría el trabajo de mantenimiento mucho mas sencillo. Pero para un proyecto mas sencillo sigue siendo una buena opción Vanilla JavaScript.

Me gustaría saber que opinas?

Saludos!

Me recuerda a Java

Genial TypeScript es como mi lenguaje favorito JAVA, fácil de manejar jaja

El tipado de typescript es muy bueno.

Recomiendo el curso de typescript:
https://platzi.com/clases/typescript/

Buenas noches, le paso mi aporte

type speed = number;
type formOfMovility = string;
export class Transport {

    constructor(private _speed: speed, private _formOfMovility: formOfMovility) { }

    public get speed() {
        return this._speed;
    }

    public set speed(value: speed) {
        this._speed = value;
    }

    public get formOfMovility(): formOfMovility {
        return this._formOfMovility;
    }

    public set formOfMovility(value: formOfMovility) {
        this._formOfMovility = value;
    }

}

type numOfDoors = number;
export class Car extends Transport {
    constructor(speed, formOfMovility: formOfMovility, private _numOfDoors: numOfDoors) {
        super(speed, formOfMovility);
    }

    public get speed(): speed {
        return super.speed + 10;
    }

    public get numOfDoors(): numOfDoors {
        return this._numOfDoors;
    }

    public set numOfDoors(value: numOfDoors) {
        this._numOfDoors = value;
    }
}


const transport: Transport = new Transport(20, 'suelo');
const car = new Car(20, 'suelo', 4);

Con typescritp se podría ahorrar código y dejarlo más limpio de la siguiente forma, dejo código completo de las clases en pastebin.

Clases Typescript

El tema radica en dejar los constructores de la siguiente forma:

constructor(protected velocidad: number, protected formaDeMovilidad: string){}
constructor(protected velocidad: number, protected formaDeMovilidad: string, protected cantidadDePuertas: number) {
    super(velocidad, formaDeMovilidad);
}

Un saludo y gracias.

// creamos nuestra classe utilizando 'class'
class Transporte {
  // asignamos el acceso de sus atributos
  private velocidad: number;
  private formaDeMovilidad: string;

  // creamos un constructor para setear las variables
  // remarcamos que tipos de datos van a ser esas variables
  constructor(velocidad: number, formaDeMovilidad: string) {
    this.velocidad = velocidad;
    this.formaDeMovilidad = formaDeMovilidad;
  }
  
  // creamos nuestros métodos 'getters' y 'setters'
  getVelocidad() {
    return this.velocidad;
  }
  setVelocidad(velocidad: number) {
    this.velocidad = velocidad;
  }
  getFormaDeMovilidad() {
    return this.formaDeMovilidad;
  }
  setFormaDeMovilidad(formaDeMovilidad: string) {
    this.formaDeMovilidad = velocidad;
  }
}

// probamos nuestra clase
const transporte: Transporte = new Transporte(20, 'suelo');

// creamos otra clase 'extendiendo' transporte
// hacemos uso de la herencia de programacion Or. a Objetos
class Auto extends Transporte {
  // agregamos más parametros
  private cantidadDePuertas: number;
  
  constructor(
    velocidad: number, 
    formaDeMovilidad: string,
    // agregamos un nuevo elemento
    cantidadDePuertas: number
  ) {
    // usamos super para sobrescribir el constructor
    // hacemos uso del constructor del padre
    super(velocidad, formaDeMovilidad);
    // seteamos nuestro nuevo elemento
    this.cantidadDePuertas = cantidadDePuertas;
  }

  // sobreescribimos funciones de la 'clase padre'
  getVelocidad() {
    return super.getVelocidad() + 10;
  }
  // o también creamos las nuevas
  getCantidadDePuertas() {
    return this.cantidadDePuertas;
  }
  setCantidadDePuertas(cantidadDePuertas: number) {
    this.cantidadDePuertas = cantidadDePuertas;
  }
}

// probamos nuestra nueva class
const auto: Auto = new Auto

Definitivamente seguiria usando typescript

La palabra reservada “super” que función tiene??

Dentro de TypeScript podemos realizar programación orientada a objetos y como su nombre lo dice vamos a programar objetos, pero para generar dichos objetos primero debemos crear su plantilla base que recibe el nombre de clase.

Una clase está integrada por propiedades y funciones, estas pueden ser privadas, públicas o protected.

A la variable que le asignamos el valor de un objeto debemos indicarle que su tipo de dato es igual a la clase.

Una característica de la programación orientada a objetos es que podemos crear clases padre que hereden sus propiedades y funciones a una clase hijo, esto es la herencia y dentro de TypeScript se representa con la palabra extends.

Lo veo como una fusion de Java y Java Script, es más, su sintaxis es muy similar a Kotlin, pero ahora que desarrollo el back con JS y Nodejs lo veo como una ampliacion de JS para restringir el tipo de dato que se obtiene del cliente y evitar validaciones, pero, siendo sinceros me parece un java flexible. JS me parece mucho mejor.

Si lo usaría, me parece una forma de seguir las buenas prácticas que se tienen de los demás lenguajes, pero teniendo lo que hace bueno a JavaScript.

A la variable que le asignamos el valor de un objeto debemos indicarle que su tipo de dato es igual a la clase.

Una característica de la programación orientada a objetos es que podemos crear clases padre que hereden sus propiedades y funciones a una clase hijo, esto es la herencia y dentro de TypeScript se representa con la palabra extends.

En realidad no tengo mucha experiencia en programación pero pienso que Typescript es un lenguaje excelente para definir bien las clases con las propiedades de la programación orientada a objetos.

Muy buena la claseeee un gran repaso para POO

Para modificar varias lineas VS Code recuerden que se hace con alt+click en los lugares que quieran modificar 😉

Me parece que con TS se puede ser mas organizado.
Me recuerda hace apenas unos años que programaba en C++ jejeje

Que clase de Java es este :v

claro que lo utilizaría, sirve demasiado para mantener el control de los errores en nuestro codigo.

Muy buen curso

Sin duda antes de irme a Angular debo terminar este curso

class y extends es de ES6, no se confundan.

Utilizaria TypeScript sin dudar para cualquier proyecto. Es increible como tu código JS es transformado a objetos. De esta forma es mucho mas ordenado. Lo usaría para Agular, React o View. Me da la sensación como si estuviera trabajando en Java o PHP

Ahora que me encuentro desarrollando un API, de las cosas que más me ha gustado es el autocompletado, eso sin descartar todas las ventajas que mencionan los compañeros en los comentarios.

TypeScript es un gran paso para ser un desarrollador en js, lo veo muy necesario aprender… vamos por maaas

TypeScript lo veo como el lenguaje que le da superpoderes a JS y lo hace crecer mucho más de lo que actualmente crece.
Le da funcionalidades al lenguaje que muchas personas querían que tuviera antes y por eso no lo usaban.

Javascript siempre me ha parecido feo, me inclino mas por el backend,pero con typrescript creo que me sentiré mucho mas cómodo, al parecerse mucho mas a la manera habitual con la que trabajo

Me ha gustado mucho el curso.

Creo que si es necesario incluir Typescript en los proyectos de Angular y React, dándole así al desarrollador más control por las bondades que incluye TS

Tengo una duda, ¿Hay limite en cuento al numero de parámetros que se pasa dentro de una función constructora?

buena clase, me encanta el parecido que esto tiene con java y c#. Creo que voy a aprender mucho más rápido de lo que pensaba. Ademas que el instructor es bastante bueno.

En definitiva prefiero typeScript.

es excelente, ya trabajo con angular y ionic

Si Si Si , cambiaría a Javascript por Typescript y eso que recien estoy empezando, hay mucho mas orden, siento que me puedo adaptar muy facil ^^

se puede usar typescript en react y vue

Definitvamente lo usaría

Si lo cambiaría porque le da mucho orden al código y me parece mas fácil de leer e interpretar.

<class Transporte{
    private velocidad: number;
    private formaDeMovilidad: string;

    //metodo constructor
    constructor(velocidad: number, formaDeMovilidad: string){
        this.velocidad = velocidad;
        this.formaDeMovilidad = formaDeMovilidad;
    }
    //metodos setters y getters
    getVelocidad(){
        return this.velocidad;
    }
    setVelocidad(velocidad: number){
        this.velocidad = velocidad;
    }


    getFormaDeMovilidad(){
        return this.formaDeMovilidad;
    }
    setFormaDeMovilidad(formaDeMovilidad: string){
        this.formaDeMovilidad = formaDeMovilidad;
    }
}
//Forma de instanciar una clase
const transporte: Transporte = new Transporte(20, 'suelo');

//Auto hereda de Transporte
class Auto extends Transporte{
    private puertas: number;

    //el metodo constructor utilizado es el del padre con un parametro adicional propio de la clase hijo
    constructor(velocidad: number, formaDeMovilidad: string, puertas: number){
       //los parametros del padre
       super(velocidad, formaDeMovilidad);
       this.puertas = puertas; 
    }
    //sobrescribir funciones de la clase padre
    getVelocidad(){
        //llamamos a la funcion del padre
        return super.getVelocidad() + 10;
    }

    getPuertas(): number{
        return this.puertas;
    }
    setPuertas(puertas: number){
        this.puertas = puertas;
    }
}

const auto: Auto = new Auto(10, 'suelo', 4);>

Esto es muy parecido a un POJO(Plain Old Java Object) en el contexto de Java

Excelente TypeScript para angular

Dentro de TypeScript podemos realizar programación orientada a objetos y como su nombre lo dice vamos a programar objetos, pero para generar dichos objetos primero debemos crear su plantilla base que recibe el nombre de clase.

Una clase está integrada por propiedades y funciones, estas pueden ser privadas, públicas o protected.

Muy buena explicación, aunque es un poco enredado, sin dudas Typescript da un mejor control al código y lo deja a prueba de futuros errores.

https://gyazo.com/bddd3c0125472faaca3413ea5895e008 tengo este fallo y no se por que 😕

Mi respuesta sería: depende, depende de qué aplicación esté haciendo y quizá de la experiencia. Quizá si vengo del mundo de Java que es 100% orientado a objetos, sería bueno utilizar typescript, ya que el manejo de clases es muuuuy parecido y perder ese control en el tipado podría confundirme al utilizar JS.

Antes no lo usaba, la verdad no sé por qué, pero ya trabajando en un proyecto real me he dado cuenta lo importante que es y lo mucho que ayuda al equipo de trabajo.

Buena clase, estoy mas familiarizado con JAVA, C#… y claro que incluiria.

Definitivamente cambiaría a TypeScript, al inicio de mi carrera cuando iniciaba en web llegué a tener problemas por la falta de control por la libertad de JavaScript, prefiero perder esa flexibilidad para poder usar la POO nuevamente.

No lo se rick parece C++ JAJAJA

De aquí para el curso de Programación Orientada a Objetos

Que es mejor empezar con typescript para aprender algun lenguajes y las sintaxis jajajaj

Actualmente podemos utilizar getters y setters para el encapsulamiento

Class MyClass {
	private variable: any;
	
	get Variable() {
		//lógica de negocio para lectura
		return this.variable;
	}

	set Variable(valor) {
		//lógica de negocio para escritura
		this.variable = valor;
	}
}
// Se usan como parametros normales
const instance = new MyClass();
instance.Variable = 'Algún valor';

La historia de mi vida…
aprende JAVA
desaprende java para trabajar con Node
repasa java para Trabjar con TypeScript…
{inserte meme de tony stark con la mano en la frente aquí.}

Excelente explicación

Ahora conociendo TypeScript lo prefiero sobre vanilla, es desarrollar a otro nivel con Javascript.

Vengo de JS y si utilizaría TS me da mas control del código, puedo evitar muchos errores comunes que suele ocurrir en JS y me parece genial, Gran clase, Creo que se debió haber mencionado realizar el curso de TS ya que este curso ayuda a consolidar los temas vistos en este.

excelente pero porque usar typeScript si tenemos lenguajes de programacion que ya hacen eso y ademas javascript te deja mas abierto a los tipos ?