Default generic types let you set a fallback type for a generic. This means if no type is given, the default is used automatically.
Default generic types in Typescript
function example<T = string>(value: T): T { return value; }
The = string after T sets the default type.
If you call example() without specifying T, it uses string.
number.function identity<T = number>(arg: T): T { return arg; }
const result = identity(42); // T is number by default const text = identity<string>("hello"); // T is string explicitly
boolean.class Box<T = boolean> { value: T; constructor(value: T) { this.value = value; } }
This function wraps a value in an array. If no type is given, it assumes string. We show both default and explicit usage.
function wrapInArray<T = string>(item: T): T[] { return [item]; } const defaultArray = wrapInArray('hello'); const numberArray = wrapInArray<number>(123); console.log(defaultArray); console.log(numberArray);
Default generic types make your code friendlier and reduce the need to always specify types.
You can override the default by providing a type when calling the function or creating an instance.
Default generic types provide a fallback type for generics.
They make code easier to use without losing flexibility.
You can still specify a different type when needed.
Practice
What is the main purpose of default generic types in TypeScript?
Solution
Step 1: Understand generic types
Generic types allow functions or classes to work with any type specified by the user.Step 2: Role of default generic types
Default generic types provide a fallback type if the user does not specify one explicitly.Final Answer:
To provide a fallback type when no type argument is specified -> Option AQuick Check:
Default generic types = fallback type [OK]
- Thinking default generics enforce a fixed type
- Confusing default generics with type conversion
- Believing default generics disable generics
Which of the following is the correct syntax to set a default generic type T to string in a function?
function example<T = string>()
Solution
Step 1: Recall TypeScript generic syntax
Default generic types use the equals sign (=) to assign a fallback type.Step 2: Analyze options
function example<T = string>() uses<T = string>which is correct syntax for default generic types.Final Answer:
function example<T = string>() -> Option CQuick Check:
Default generic syntax uses = [OK]
- Using colon (:) instead of equals (=)
- Adding question mark (?) incorrectly
- Confusing extends with default assignment
What will be the output of the following TypeScript code?
function wrap<T = number>(value: T): T[] {
return [value];
}
const result = wrap('hello');
console.log(result);Solution
Step 1: Understand default generic type usage
The functionwraphas a default generic typeT = number, but the caller passes a string 'hello', soTbecomesstring.Step 2: Analyze function output
The function returns an array containing the passed value, so it returns["hello"].Final Answer:
["hello"] -> Option BQuick Check:
Explicit type overrides default generic [OK]
- Assuming default generic always applies
- Expecting a type error for different type
- Confusing value with type name
Identify the error in this TypeScript code using default generic types:
function identity<T = number>(arg: T): T {
return arg.length;
}Solution
Step 1: Analyze the generic type and usage
The generic typeTdefaults tonumber, butnumberdoes not have alengthproperty.Step 2: Identify the error
Accessingarg.lengthcauses a TypeScript error becauselengthmay not exist on typeT.Final Answer:
Property 'length' may not exist on type 'T' -> Option AQuick Check:
Accessing unknown properties on generic types causes errors [OK]
- Ignoring property existence on generic types
- Thinking default generic restricts properties
- Assuming no error if default is number
Given this generic function with a default type, how can you call it to get an array of booleans?
function createArray<T = string>(length: number, value: T): T[] {
return Array(length).fill(value);
}Choose the correct call:
Solution
Step 1: Understand default generic and call signature
The function defaultsTtostring, but to get an array of booleans, we must specifyT = boolean.Step 2: Analyze options
createArray<boolean>(3, true) explicitly setsTtobooleanand passestrueas value, which matches the type.Final Answer:
createArray<boolean>(3, true) -> Option DQuick Check:
Specify generic type to override default [OK]
- Relying on default generic without specifying type
- Passing arguments in wrong order
- Mismatching generic type and value type
Ready to prove it?
Pass the test and this pattern moves unknown
