📖 Scenario: You are building a simple system to store information about different types of items. Each item has a name and a value. The value can be of any type, like a number, string, or boolean.
🎯 Goal: Create a generic interface called Item that can hold a name as a string and a value of any type. Then create two objects using this interface: one with a number value and one with a string value.
📋 What You'll Learn
Create a generic interface called Item with a type parameter T.
The interface must have a name property of type string.
The interface must have a value property of type T.
Create a variable called numberItem of type Item<number> with name as "Age" and value as 30.
Create a variable called stringItem of type Item<string> with name as "Color" and value as "Blue".
Print both variables to the console.
💡 Why This Matters
🌍 Real World
Generic interfaces help you write flexible and reusable code that works with many data types, like storing different kinds of items in a shopping cart or settings.
💼 Career
Understanding generics is important for TypeScript developers to build scalable and type-safe applications, which is a valuable skill in many software development jobs.
Progress0 / 4 steps
1
Create the generic interface
Create a generic interface called Item with a type parameter T. It should have a name property of type string and a value property of type T.
Typescript
Hint
Use interface Item<T> to declare a generic interface with a type parameter T.
2
Create a number item
Create a variable called numberItem of type Item<number> with name set to "Age" and value set to 30.
Typescript
Hint
Use const numberItem: Item<number> = { name: "Age", value: 30 }; to create the variable.
3
Create a string item
Create a variable called stringItem of type Item<string> with name set to "Color" and value set to "Blue".
Typescript
Hint
Use const stringItem: Item<string> = { name: "Color", value: "Blue" }; to create the variable.
4
Print the items
Print numberItem and stringItem to the console using two separate console.log statements.
Typescript
Hint
Use console.log(numberItem); and console.log(stringItem); to print the objects.
Practice
(1/5)
1. What does the <T> represent in a TypeScript generic interface declaration?
easy
A. A special type that only accepts strings
B. A variable name for a function
C. A keyword to declare a constant
D. A placeholder for a type that will be specified later
Solution
Step 1: Understand generic syntax
The <T> syntax in TypeScript is used to declare a generic type parameter, which acts as a placeholder for a type.
Step 2: Identify the role of T
This placeholder allows the interface to be flexible and reusable with different types specified later.
Final Answer:
A placeholder for a type that will be specified later -> Option D
Quick Check:
Generic <T> = Type placeholder [OK]
Hint: Remember <T> means 'type to be given later' [OK]
Common Mistakes:
Thinking T is a variable or constant
Confusing <T> with a function parameter
Assuming T is always a string type
2. Which of the following is the correct syntax to declare a generic interface named Box with a type parameter T?
easy
A. interface Box<T> = { content: T; }
B. interface Box<T> { content: T; }
C. interface Box<T> content: T;
D. interface Box { content: T; }
Solution
Step 1: Check interface declaration syntax
In TypeScript, interfaces are declared with the keyword interface followed by the name and optional generic parameters in angle brackets.
Step 2: Verify correct use of braces and type parameter
The correct syntax includes curly braces to define the interface body and uses <T> to declare the generic type parameter.
C. Interface Pair cannot have two properties of the same type
D. Object literal syntax is incorrect
Solution
Step 1: Check interface usage with generics
The interface Pair<T> requires a type argument when used. Here, Pair is used without specifying <T>.
Step 2: Identify the missing generic argument error
TypeScript will report an error because the generic type parameter is missing when declaring pair.
Final Answer:
Missing generic type argument when using Pair -> Option A
Quick Check:
Generic interface usage needs type argument [OK]
Hint: Always specify type argument when using generic interfaces [OK]
Common Mistakes:
Forgetting to add <Type> when using generic interfaces
Assuming default type if omitted
Confusing property types with generic parameter
5. You want to create a generic interface Result<T> that holds a data property of type T and a success boolean. Which of the following implementations correctly uses this interface to type a variable holding a string result?
Step 1: Understand the generic interface requirements
The interface Result<T> expects a data property of type T and a success boolean.
Step 2: Check each option for correct type usage
const res: Result<string> = { data: 123, success: true }; assigns a number to data but expects a string type, so it's incorrect. const res: Result<string> = { data: 'Done', success: true }; correctly assigns a string to data and includes success. const res: Result = { data: 'Done', success: true }; omits the generic type argument, which is required. const res: Result<number> = { data: 'Done', success: true }; uses number type but assigns a string, causing a type mismatch.