Bird
Raised Fist0
Typescriptprogramming~5 mins

How TypeScript infers generic types - Quick Revision & Summary

Choose your learning style10 modes available
Recall & Review
beginner
What does it mean when TypeScript 'infers' generic types?
TypeScript automatically figures out the specific types to use for generic parameters based on the values you provide when calling a function or creating an object.
Click to reveal answer
beginner
How does TypeScript infer the generic type in this function?
function identity<T>(arg: T): T { return arg; }
TypeScript looks at the argument you pass to identity and sets T to that argument's type automatically. For example, if you call identity(5), T becomes number.
Click to reveal answer
intermediate
Can TypeScript infer multiple generic types in a function? Give an example.
Yes. For example:
function pair(first: T, second: U): [T, U] { return [first, second]; }
When you call pair('hello', 10), TypeScript infers T as string and U as number.
Click to reveal answer
beginner
What happens if TypeScript cannot infer a generic type?
You must explicitly provide the generic type when calling the function or creating the object. For example, identity<string>('text') tells TypeScript exactly what type to use.
Click to reveal answer
beginner
Why is generic type inference helpful in TypeScript?
It saves you from writing extra type annotations, making code cleaner and easier to read, while still keeping type safety.
Click to reveal answer
What does TypeScript use to infer a generic type in a function?
AThe type of the argument passed to the function
BThe return type of the function
CThe name of the generic parameter
DThe order of the generic parameters
If a function has two generic types T and U, how does TypeScript infer them?
AFrom the first argument only
BFrom the function's return type
CFrom the types of the corresponding arguments passed
DIt cannot infer multiple generic types
What should you do if TypeScript cannot infer a generic type?
AExplicitly specify the generic type when calling the function
BRename the generic type
CIgnore the error and run the code
DRemove the generic type
Which of these is a benefit of TypeScript's generic type inference?
AIt disables type checking
BIt removes type safety
CIt makes code longer
DIt reduces the need for extra type annotations
Given function wrap<T>(value: T): { value: T }, what is the inferred type of T when calling wrap('hello')?
Anumber
Bstring
Cboolean
Dany
Explain how TypeScript infers generic types when you call a generic function.
Think about how TypeScript guesses the types based on what you pass in.
You got /3 concepts.
    Describe a situation where you need to explicitly specify generic types in TypeScript.
    Consider functions with no input or complex types.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does TypeScript do when you call a generic function without specifying the type explicitly?
      easy
      A. It ignores the generic and treats the function as non-generic.
      B. It throws a compilation error asking for the type.
      C. It guesses the generic type based on the arguments you pass.
      D. It always uses the type any by default.

      Solution

      1. Step 1: Understand generic function calls

        When you call a generic function without specifying the type, TypeScript tries to figure out the type from the arguments you provide.
      2. Step 2: Check TypeScript behavior

        TypeScript uses the argument types to infer the generic type automatically, so you don't have to write it explicitly.
      3. Final Answer:

        It guesses the generic type based on the arguments you pass. -> Option C
      4. Quick Check:

        Type inference = guessing type from arguments [OK]
      Hint: Remember: TypeScript guesses generic types from arguments [OK]
      Common Mistakes:
      • Thinking TypeScript requires explicit generic types always
      • Assuming it defaults to any type
      • Believing generic types are ignored if not specified
      2. Which of the following is the correct syntax to define a generic function in TypeScript that returns the same type it receives?
      easy
      A. function identity<T>(arg: T): T { return arg; }
      B. function identity(arg: T): T { return arg; }
      C. function identity<T>(arg): T { return arg; }
      D. function identity<T>(arg: T): any { return arg; }

      Solution

      1. Step 1: Check generic function syntax

        The generic type parameter T must be declared before the function parameters inside angle brackets <T>.
      2. Step 2: Verify parameter and return types

        The parameter arg should be typed as T, and the return type should also be T to return the same type.
      3. Final Answer:

        function identity<T>(arg: T): T { return arg; } -> Option A
      4. Quick Check:

        Generic syntax = <T> before parameters [OK]
      Hint: Generic type <T> goes before parameters in function definition [OK]
      Common Mistakes:
      • Omitting <T> before parameters
      • Not typing the argument as T
      • Returning any instead of T
      3. What will be the output of this TypeScript code?
      function wrapInArray<T>(value: T) {
        return [value];
      }
      
      const result = wrapInArray(42);
      console.log(typeof result[0]);
      medium
      A. "number"
      B. "string"
      C. "object"
      D. "undefined"

      Solution

      1. Step 1: Identify the generic type inferred

        The function wrapInArray is called with 42, a number, so TypeScript infers T as number.
      2. Step 2: Check the returned array and logged type

        The function returns an array containing the number 42. Accessing result[0] gives 42, so typeof result[0] is "number".
      3. Final Answer:

        "number" -> Option A
      4. Quick Check:

        typeof 42 = "number" [OK]
      Hint: Generic type matches argument type, so typeof matches argument [OK]
      Common Mistakes:
      • Assuming the type is string by default
      • Confusing array type with element type
      • Expecting 'object' because of array
      4. Consider this code snippet:
      function firstElement<T>(arr: T[]): T {
        return arr[0];
      }
      
      const value = firstElement([true, false, true]);
      console.log(value.toUpperCase());

      What is the problem here?
      medium
      A. The array passed is empty, so arr[0] is undefined.
      B. TypeScript cannot infer the generic type T.
      C. The function firstElement returns an array instead of an element.
      D. Calling toUpperCase() on a boolean causes a compile-time error.

      Solution

      1. Step 1: Analyze the inferred generic type

        The array [true, false, true] is of type boolean[], so T is inferred as boolean.
      2. Step 2: Check the method call on the returned value

        The function returns a boolean, but toUpperCase() is a string method. Calling it on a boolean causes a compile-time error.
      3. Final Answer:

        Calling toUpperCase() on a boolean causes a compile-time error. -> Option D
      4. Quick Check:

        Boolean has no toUpperCase() method [OK]
      Hint: Check if method matches the inferred type before calling [OK]
      Common Mistakes:
      • Thinking TypeScript inference failed
      • Assuming function returns array instead of element
      • Ignoring compile-time errors from wrong method calls
      5. You want to write a generic function mergeObjects that takes two objects and returns a new object combining both. How does TypeScript infer the generic types when you call mergeObjects({name: "Alice"}, {age: 30})?
      function mergeObjects(obj1: T, obj2: U): T & U {
        return {...obj1, ...obj2};
      }
      hard
      A. TypeScript infers both T and U as object losing specific properties.
      B. TypeScript infers T as {name: string} and U as {age: number}, returning their intersection type.
      C. TypeScript cannot infer generic types for multiple parameters automatically.
      D. TypeScript infers T and U as any by default.

      Solution

      1. Step 1: Identify argument types passed to the function

        The first argument is {name: "Alice"} which has type {name: string}. The second is {age: 30} with type {age: number}.
      2. Step 2: Understand TypeScript's inference for multiple generics

        TypeScript infers T as the type of the first argument and U as the type of the second argument automatically.
      3. Step 3: Check the return type

        The return type is the intersection T & U, meaning the combined object has both name and age properties.
      4. Final Answer:

        TypeScript infers T as {name: string} and U as {age: number}, returning their intersection type. -> Option B
      5. Quick Check:

        Multiple generics inferred from each argument [OK]
      Hint: Each generic inferred from corresponding argument type [OK]
      Common Mistakes:
      • Assuming generic types default to object or any
      • Thinking TypeScript can't infer multiple generics
      • Confusing intersection type with union type
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard