Generic functions let you write one function that works with many types of data. This saves time and avoids repeating code for different data types.
Generic functions with arrays in Typescript
function functionName<T>(array: T[]): T[] { // function body return array; }
The <T> is a placeholder for any type you want to use.
You use T[] to say the function works with an array of type T.
undefined if the array is empty.function getFirstElement<T>(array: T[]): T | undefined { return array[0]; }
function reverseArray<T>(array: T[]): T[] { return array.slice().reverse(); }
function emptyArray<T>(): T[] { return []; }
This program defines a generic function to get the first element of any array. It tests the function with a number array, a string array, and an empty array.
function getFirstElement<T>(array: T[]): T | undefined { return array[0]; } const numberArray = [10, 20, 30]; const stringArray = ['apple', 'banana', 'cherry']; const emptyArray: number[] = []; console.log('First number:', getFirstElement(numberArray)); console.log('First string:', getFirstElement(stringArray)); console.log('First element of empty array:', getFirstElement(emptyArray));
Time complexity is O(1) because it just accesses the first element.
Space complexity is O(1) since it does not create new data.
A common mistake is forgetting to handle empty arrays, which can cause undefined results.
Use generic functions when you want one function to work with many types safely instead of writing many similar functions.
Generic functions use <T> to work with any data type.
They help avoid repeating code for different array types.
Always consider empty arrays when working with generic array functions.
Practice
What is the main purpose of using a generic function with <T> in TypeScript when working with arrays?
Solution
Step 1: Understand generic type
The generic type<T><T>allows a function to accept any type, making it reusable for different data types.Step 2: Apply to arrays
Using<T>with arrays means the function can handle arrays of numbers, strings, or any other type without rewriting the function.Final Answer:
To allow the function to work with arrays of any type without rewriting code. -> Option AQuick Check:
Generic<T>= reusable for any type [OK]
<T> means any type works [OK]- Thinking generic restricts to one type
- Assuming generic converts types
- Believing generic improves speed only
Which of the following is the correct syntax to declare a generic function firstElement that returns the first element of an array of any type?
function firstElement(____): T | undefined {
return arr[0];
}Solution
Step 1: Identify generic function syntax
Generic functions declare the type parameter before the argument list, likefunction fnName<T>(args).Step 2: Match syntax to example
The correct syntax isfunction firstElement<T>(arr: T[]): T | undefinedto accept an array of typeT.Final Answer:
<T>(arr: T[]) -> Option CQuick Check:
Generic syntax = <T>(args) [OK]
- Placing
<T>after parameters - Omitting
<T>entirely - Using incorrect parameter types
What will be the output of the following TypeScript code?
function getLastElement<T>(arr: T[]): T | undefined {
return arr.length ? arr[arr.length - 1] : undefined;
}
const nums = [10, 20, 30];
const result = getLastElement(nums);
console.log(result);Solution
Step 1: Understand function behavior
The function returns the last element if the array is not empty; otherwise, it returns undefined.Step 2: Apply to given array
The arraynumsis [10, 20, 30], so the last element is 30, which is returned and logged.Final Answer:
30 -> Option AQuick Check:
Last element of [10,20,30] = 30 [OK]
- Returning first element instead
- Ignoring empty array case
- Expecting error due to generics
Identify the error in this generic function and select the corrected version:
function wrapInArray<T>(item: T): T[] {
return item;
}Solution
Step 1: Analyze function return type
The function promises to return an array of typeT[], but returnsitemwhich is typeT, not an array.Step 2: Fix return statement
Wrappingitemin square brackets[item]creates an array containing the item, matching the return type.Final Answer:
Change return to[item]to return an array containing the item. -> Option BQuick Check:
Return array by wrapping item in [] [OK]
- Returning item directly instead of array
- Changing parameter type unnecessarily
- Removing generics without reason
You want to create a generic function filterNonEmpty that takes an array of any type T and returns a new array excluding null and undefined values. Which implementation correctly uses generics and array filtering?
Solution
Step 1: Define input and output types
The input array can containT,null, orundefined, so its type is(T | null | undefined)[]. The output should be onlyT[].Step 2: Filter out
Usingnullandundefinedfilter(item => item != null)removes bothnullandundefinedvalues safely.Final Answer:
function filterNonEmpty<T>(arr: (T | null | undefined)[]): T[] { return arr.filter(item => item != null); } -> Option DQuick Check:
Filter null/undefined from mixed array [OK]
- Not typing input to include null/undefined
- Returning wrong output type
- Using strict !== null only, missing undefined
Ready to prove it?
Pass the test and this pattern moves unknown
