Learn TypeScript Help

Defining Multiple Type Parameters

Podemos definir mais de um tipo na parametrização das classes genericas, ou seja, definirmos além do T

A definição segue a mesma lógica então basta definirmos uma virgula e incluir o parametro que queremos:

class DataCollection<T extends { name: string }, U>

Código completo:

import {City, 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)]; let cities = [new City("London", 8136000), new City("Paris", 2141000)]; class DataCollection<T extends { name: string }, U> { private items: T[] = []; constructor(initialItems: T[]) { this.items.push(...initialItems); } collate(targetData: U[], itemProp: string, targetProp: string): (T & U)[] { let results = []; this.items.forEach(item => { let match = targetData.find(d => d[targetProp] === item[itemProp]); if (match !== undefined) { results.push({...match, ...item}); } }); return results; } } let peopleData = new DataCollection<Person, City>(people); let collatedData = peopleData.collate(cities, "city", "name"); collatedData.forEach(c => console.log(`${c.name}, ${c.city}, ${c.population}`));
01 December 2025