Using Different Type Arguments
Podemos definir diferentes tipos de argumentos para a classe generica como no exemplo abaixo em que parametrizamos para a classe generica tipos diferentes como no exemplo que temos:
Cada tipo passados como argumento o objeto final é tratado como aquele tipo que do argumento, assim a instãncia de personDatae productData possuem cada um o seu tipo de implementação a acerca do seu tipo passado nos simbolos de <> depois do nome da classe:
let peopleData = new DataCollection<Person>(people);
let firstPerson = peopleData.getItem(0);
console.log(`First Person: ${firstPerson.name}, ${firstPerson.city}`);
let productData = new DataCollection<Product>(products);
let firstProduct = productData.getItem(0);
console.log(`First Product: ${firstProduct.name}, ${firstProduct.price}`);
import {Person, Product} from "./dataTypes";
let people = [new Person("Bob Smith", "London"),
new Person("Dora Peters", "New York")];
let products = [new Product("Running Shoes", 100), new Product("Hat", 25)];
class DataCollection<T> {
private items: T[] = [];
constructor(initialItems: T[]) {
this.items.push(...initialItems);
}
add(newItem: T) {
this.items.push(newItem);
}
// getNames(): string[] {
// return this.items.map(item => item.name);
// }
getItem(index: number): T {
return this.items[index];
}
}
let peopleData = new DataCollection<Person>(people);
let firstPerson = peopleData.getItem(0);
console.log(`First Person: ${firstPerson.name}, ${firstPerson.city}`);
let productData = new DataCollection<Product>(products);
let firstProduct = productData.getItem(0);
console.log(`First Product: ${firstProduct.name}, ${firstProduct.price}`);
01 December 2025