TypeScript Generics
Using generics for reusable code
Generic Function
function identity<T>(value: T): T { # generic type parameter
return value;
}
let result = identity<string>('hello'); # explicit type
let result2 = identity(42); # inferred type
Generic Interface
interface Box<T> { # generic interface
value: T;
}
let box: Box<number> = { value: 10 };
Generic Class
class Container<T> { # generic class
constructor(private value: T) { }
getValue(): T {
return this.value;
}
}
let container = new Container<string>('hello');
Generic Constraints
interface HasLength {
length: number;
}
function logLength<T extends HasLength>(value: T) { # constrain type
console.log(value.length);
}
Multiple Type Parameters
function pair<T, U>(first: T, second: U): [T, U] { # multiple generics
return [first, second];
}