TS Basic Generics
Generics in TypeScript allow you to create reusable components that work with a variety of types, providing greater flexibility and type safety. They are especially useful for functions, classes, and interfaces.
Key Topics
Generic Functions
Generic functions allow you to define a function with a placeholder type that can be specified when the function is called.
function identity(value: T): T {
return value;
}
console.log(identity("Hello")); // Hello
console.log(identity(42)); // 42
Output
Hello
42
Explanation: The identity
function uses a generic type T
, which allows the function to accept and return values of any specified type.
Generic Classes
Generic classes allow you to define a class with type parameters, enabling type-safe properties and methods.
class Box {
private content: T;
constructor(content: T) {
this.content = content;
}
getContent(): T {
return this.content;
}
}
const stringBox = new Box("TypeScript");
console.log(stringBox.getContent()); // TypeScript
const numberBox = new Box(123);
console.log(numberBox.getContent()); // 123
Output
TypeScript
123
Explanation: The Box
class uses a generic type parameter T
, which is specified when creating an instance of the class.
Generic Interfaces
Generic interfaces allow you to define the shape of objects with flexible types.
interface Pair {
key: K;
value: V;
}
const numberStringPair: Pair = { key: 1, value: "One" };
console.log(numberStringPair.key); // 1
console.log(numberStringPair.value); // One
Output
1
One
Explanation: The Pair
interface uses two generic type parameters K
and V
, making it versatile for key-value pair representations.
Key Takeaways
- Generic Functions: Create flexible and reusable functions that work with any type.
- Generic Classes: Define type-safe classes with flexible type parameters.
- Generic Interfaces: Shape objects with adaptable type specifications.
- Best Practice: Use generics to enforce type safety while maintaining flexibility.