javascript - objeto - Typescript, utilizando clases sin constructor
crear objeto javascript (2)
Mientras trabajaba con el tutorial "Tour of Heroes" en el sitio web de Angular, encontré la siguiente sintaxis (en breve):
class Hero {
id: number,
name: string,
}
const aHero: Hero = {
id: 1,
name: ''Superman''
}
console.log(aHero instanceof Hero); //false
¿Cuál sería el punto de hacer esto? cuando si reviso el tipo de "aHero", es solo un objeto común y no un tipo de "Héroe". ¿Sería mejor simplemente inicializar un objeto con un constructor ?:
class Hero {
constructor(id: number, name: string) {}
}
Puedes usar la clase como un tipo que es la forma en que lo estás usando. Entonces, ya sea que Hero sea una interfaz o una clase, no importa porque lo estés utilizando como un tipo.
class Hero { id: number; name: string }
o
interface Hero { id: number; name: string }
Lo siguiente no importa si Hero es una clase o interfaz
let hero: Hero = { id: 1, name: ''me'' }
Donde la interface
y la class
diferenciada es que la interface
es solo para usted, no se transfiere a javascript. Una class
hace y no puedes new
una new
interface
.
Constructor o no Constructor, si es new
, entonces es una instanceof
. Inténtalo de nuevo con esto
let hero = new Hero();
Tu instanceof
registro será true
porque creaste una instancia de Hero con la palabra clave new
.
Sé que esta pregunta ha sido respondida antes, pero en lo que respecta al código orientado a objetos, siempre fue así.
Creo que puedes hacer esto sin un constructor:
let hero: Hero = { ID: 1, Name: ''goku''};
pero si desea crear una instancia con el constructor, puede hacer esto en la clase
class Hero
{
//notice optional parameters. You have more flexibility this way.
constructor(id?: number, name?: string)
{
this.ID = id;
this.Name = name;
}
ID: number;
Name: string
}
Y hacer esto con la implementación.
let hero: Hero = new Hero(1,''goku'');
let hero2: Hero = { ID: 2, Name: ''superman'' }