Generics let you write flexible and reusable code that works with many types instead of just one specific type.
Click to reveal answer
beginner
How do generics improve code safety?
Generics keep type information so TypeScript can check your code for mistakes before running it.
Click to reveal answer
beginner
What is a simple example of a generic function?
A function that returns the same value it receives, but works with any type, like function identity<T>(arg: T): T { return arg; }.
Click to reveal answer
intermediate
Why not just use any instead of generics?
any disables type checking and can cause bugs. Generics keep type info while still being flexible.
Click to reveal answer
beginner
How do generics help with code reuse?
You write one function or class that works with many types, so you don’t repeat similar code for each type.
Click to reveal answer
What is the main benefit of using generics in TypeScript?
AWrite flexible code that works with many types
BMake code run faster
CAvoid using functions
DDisable type checking
✗ Incorrect
Generics allow writing flexible and reusable code that works with different types while keeping type safety.
Which keyword is used to declare a generic type in a function?
Afunction
Bclass
CT
Dany
✗ Incorrect
The syntax declares a generic type parameter named T.
Why is using any less safe than generics?
AIt disables type checking
BIt makes code slower
CIt requires more code
DIt only works with numbers
✗ Incorrect
any turns off type checking, which can cause bugs. Generics keep type info safe.
What does this generic function do? function identity<T>(arg: T): T { return arg; }
AReturns a number always
BReturns the argument unchanged
CReturns a string always
DThrows an error
✗ Incorrect
The function returns whatever argument it receives, keeping the same type.
Generics help avoid which of the following?
AUsing variables
BUsing functions
CWriting comments
DWriting the same code for different types
✗ Incorrect
Generics let you write one piece of code that works with many types, avoiding repetition.
Explain in your own words why generics are useful in TypeScript.
Think about how generics let you write one function for many types safely.
You got /4 concepts.
Describe the difference between using any and generics.
Consider what happens to type checking in each case.
You got /4 concepts.
Practice
(1/5)
1. Why do we use generics in TypeScript? function identity<T>(arg: T): T { return arg; }
easy
A. To make code run faster by skipping type checks
B. To force all variables to be of type string
C. To write functions that work with any data type while keeping type safety
D. To avoid using functions altogether
Solution
Step 1: Understand the generic function syntax
The function identity uses <T> to accept any type and return the same type.
Step 2: Recognize the benefit of generics
This allows the function to work with any type while keeping type safety, preventing errors.
Final Answer:
To write functions that work with any data type while keeping type safety -> Option C
Quick Check:
Generics = reusable + type safe functions [OK]
Hint: Generics = flexible + safe code for many types [OK]
Common Mistakes:
Thinking generics make code faster
Believing generics force string types
Confusing generics with avoiding functions
2. Which of the following is the correct syntax to declare a generic function in TypeScript?
easy
A. function example<T>(arg: T): T { return arg; }
B. function example(arg: T): T { return arg; }
C. function example<T>(arg): T { return arg; }
D. function example<T>(arg: T) { return arg;
Solution
Step 1: Check generic declaration and usage
function example<T>(arg: T): T { return arg; } correctly declares <T> and uses arg: T with return type T.
Step 2: Identify syntax errors in other options
function example(arg: T): T { return arg; } misses generic declaration. function example<T>(arg): T { return arg; } misses type for arg. function example<T>(arg: T) { return arg; } misses return type.
Final Answer:
function example<T>(arg: T): T { return arg; } -> Option A
Quick Check:
Generic syntax requires <T> and typed parameters [OK]
Hint: Generic syntax: function name<T>(arg: T): T [OK]
Common Mistakes:
Omitting <T> after function name
Not typing function parameters
Forgetting return type annotation
3. What will be the output of this TypeScript code?
function wrapInArray<T>(value: T): T[] { return [value]; }
const result = wrapInArray(5);
console.log(result);
medium
A. 5
B. [5]
C. Error: Type mismatch
D. ["5"]
Solution
Step 1: Understand the generic function behavior
The function takes a value of any type and returns an array containing that value.
Step 2: Apply the function to the number 5
Calling wrapInArray(5) returns an array with one element: 5.
Final Answer:
[5] -> Option B
Quick Check:
wrapInArray(5) = [5] [OK]
Hint: Generic function returns array with input value [OK]
Common Mistakes:
Expecting single value instead of array
Confusing number 5 with string "5"
Thinking it causes a type error
4. Identify the error in this generic function and fix it:
function getFirstElement<T>(arr: T) {
return arr[0];
}
medium
A. Parameter should be an array type: arr: T[]
B. Return type should be T[]
C. Function should not use generics here
D. Use arr.get(0) instead of arr[0]
Solution
Step 1: Analyze parameter type
The parameter arr is typed as T, but it should be an array of T to use arr[0].
Step 2: Correct the parameter type
Change arr: T to arr: T[] so the function accepts an array.
Final Answer:
Parameter should be an array type: arr: T[] -> Option A
Quick Check:
Array parameter needs T[] type [OK]
Hint: Array parameters need T[] type, not T [OK]
Common Mistakes:
Using T instead of T[] for arrays
Changing return type incorrectly
Trying to use non-array methods on arrays
5. You want to create a generic function that accepts an array of any type and returns an object mapping each element to its index. Which is the correct implementation?
hard
A. function mapToIndex<T>(arr: T[]): T[] {
return arr.map((item, index) => index);
}
B. function mapToIndex<T>(arr: T): { [key: string]: number } {
const result = {};
arr.forEach((item, index) => { result[item] = index; });
return result;
}
C. function mapToIndex(arr: any[]): any {
const result = {};
arr.forEach((item, index) => { result[item] = index; });
return result;
}
D. function mapToIndex<T>(arr: T[]): { [key: string]: number } {
const result: { [key: string]: number } = {};
arr.forEach((item, index) => { result[String(item)] = index; });
return result;
}
Solution
Step 1: Check parameter and return types
The function should accept an array of type T[] and return an object mapping strings to numbers.
Step 2: Verify implementation details
function mapToIndex<T>(arr: T[]): { [key: string]: number } {
const result: { [key: string]: number } = {};
arr.forEach((item, index) => { result[String(item)] = index; });
return result;
} converts each item to string as key and assigns its index as value, correctly building the object.
Step 3: Identify errors in other options
function mapToIndex<T>(arr: T): { [key: string]: number } {
const result = {};
arr.forEach((item, index) => { result[item] = index; });
return result;
} uses arr: T which is incorrect for arrays. function mapToIndex(arr: any[]): any {
const result = {};
arr.forEach((item, index) => { result[item] = index; });
return result;
} uses any losing type safety. function mapToIndex<T>(arr: T[]): T[] {
return arr.map((item, index) => index);
} returns an array of indexes, not the mapping object.
Final Answer:
function mapToIndex<T>(arr: T[]): { [key: string]: number } {
const result: { [key: string]: number } = {};
arr.forEach((item, index) => { result[String(item)] = index; });
return result;
} -> Option D
Quick Check:
Generic array input + object output with string keys [OK]
Hint: Use T[] for arrays and map keys as strings [OK]
Common Mistakes:
Using T instead of T[] for array parameter
Returning wrong type (array instead of object)
Not converting keys to string
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.