Classes
Definição
A classe é considerado um tipo no TypeScript, ou seja, é possível utilizá-la para definir o tipo de uma função ou de um atributo.
Atributos não inicializados
Declarar um atributo de uma classe sem atribuir um valor no momento da declaração do mesmo:
export class Company {
readonly name: string;
constructor(name: string) {
this.name = name;
}
}
const company = new Company("Udemy");
console.log(company); // Company { name: 'Udemy' }
console.log(company.name); // Udemy
OBS: todo atributo/método de um classe tem como modificador de acesso padrão o
public
, ou seja, não é necessário defini-lo explicitamente na assinatura do atributo/método.
Existe outra forma de declarar atributos no TypeScript que é por meio do da função construtora (construtor()
):
export class Collaborator {
constructor(readonly name: string, readonly lastName: string) {}
}
Atributos inicializados
Declarar um atributo de uma classe atribuindo um valor no momento da declaração do mesmo:
export class Company {
public readonly name: string = "Udemy";
}
Composição de classes
A composição de classes é quando em um classe existem atributos associados a outras classes:
export class Collaborator {}
export class Company {
public readonly name: string;
private readonly collaborators: Collaborator[] = [];
protected readonly cnpj: string;
constructor(name: string, cnpj: string) {
this.name = name;
this.cnpj = cnpj;
}
}
const company = new Company("Udemy", "11.111.111/0001-11");
console.log(company);
/*
Company {
collaborators: [],
name: 'Udemy',
cnpj: '11.111.111/0001-11'
}
*/
Exemplo
export class Collaborator {
constructor(public readonly name: string, public readonly lastName: string) {}
}
export class Company {
public readonly name: string;
private readonly collaborators: Collaborator[] = [];
protected readonly cnpj: string;
constructor(name: string, cnpj: string) {
this.name = name;
this.cnpj = cnpj;
}
public addCollaborator(collaborator: Collaborator): void {
this.collaborators.push(collaborator);
}
showCollaborators(): void {
for (const collaborator of this.collaborators) {
console.log(collaborator);
}
}
}
const company = new Company("Udemy", "11.111.111/0001-11");
const collaborator1 = new Collaborator("Luiz", "Otávio");
const collaborator2 = new Collaborator("Maria", "Miranda");
const collaborator3 = new Collaborator("João", "Vieira");
company.addCollaborator(collaborator1);
company.addCollaborator(collaborator2);
company.addCollaborator(collaborator3);
console.log(company);
company.showCollaborators();