📖 Scenario: You are building a simple program to manage a small library. You want to keep track of books and be able to describe them with a function.
🎯 Goal: Create a Book class with properties, a function to describe a book, and print the description.
📋 What You'll Learn
Create a Book class with title and author properties
Create a function called describeBook that takes a Book object and returns a string description
Create an instance of Book with exact values
Print the description returned by describeBook
💡 Why This Matters
🌍 Real World
Managing books in a library or bookstore software requires classes to represent books and functions to describe or manipulate them.
💼 Career
Understanding how to declare classes and functions is fundamental for software development jobs, especially when working with object-oriented programming languages like TypeScript.
Progress0 / 4 steps
1
Create the Book class
Create a Book class with a constructor that takes title and author as strings and sets them as public properties.
Typescript
Hint
Use class Book { constructor(public title: string, public author: string) {} } to create the class.
2
Create the describeBook function
Create a function called describeBook that takes a parameter book of type Book and returns a string in the format: "Title: [title], Author: [author]".
Typescript
Hint
Use a function with a template string to return the description.
3
Create a Book instance
Create a variable called myBook and assign it a new Book instance with title set to "The Great Gatsby" and author set to "F. Scott Fitzgerald".
Typescript
Hint
Use const myBook = new Book("The Great Gatsby", "F. Scott Fitzgerald") to create the instance.
4
Print the book description
Use console.log to print the result of calling describeBook with myBook.
Typescript
Hint
Use console.log(describeBook(myBook)) to print the description.
Practice
(1/5)
1. What is the main purpose of a function in TypeScript?
easy
A. To create a new type of variable
B. To store data without any behavior
C. To perform a specific task and optionally return a result
D. To define a constant value
Solution
Step 1: Understand what a function does
A function is a block of code designed to perform a specific task.
Step 2: Recognize the role of return values
Functions can return results after performing their task, making them reusable.
Final Answer:
To perform a specific task and optionally return a result -> Option C
Quick Check:
Function purpose = perform task + return result [OK]
Hint: Functions do tasks and can give back results [OK]
Common Mistakes:
Confusing functions with variables
Thinking functions only store data
Believing functions cannot return values
2. Which of the following is the correct way to declare a function named greet that takes a string name and returns a string in TypeScript?
easy
A. function greet(name: string): string { return `Hello, ${name}`; }
B. function greet(name) { return 'Hello, ' + name; }
C. function greet(name: string) { console.log('Hello, ' + name); }
D. function greet(): string { return name; }
Solution
Step 1: Check function parameter and return types
function greet(name: string): string { return `Hello, ${name}`; } correctly declares the parameter name as a string and the return type as string.
Step 2: Verify function body returns a string
function greet(name: string): string { return `Hello, ${name}`; } returns a template string greeting the name, matching the return type.
Final Answer:
function greet(name: string): string { return `Hello, ${name}`; } -> Option A
Quick Check:
Correct parameter and return types = function greet(name: string): string { return `Hello, ${name}`; } [OK]
Hint: Specify parameter and return types explicitly [OK]
Common Mistakes:
Omitting parameter types in TypeScript
Not returning a value when return type is declared
Using console.log instead of return
3. What will be the output of the following TypeScript code?
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
greet() {
return `Hi, I am ${this.name}`;
}
}
const p = new Person('Anna');
console.log(p.greet());
medium
A. Hi, I am Anna
B. Hi, I am undefined
C. Error: Property 'name' does not exist
D. Hi, I am
Solution
Step 1: Understand class construction
The Person class sets this.name to the passed argument 'Anna' in the constructor.
Step 2: Analyze the greet method output
The greet method returns a string including this.name, which is 'Anna'.
Final Answer:
Hi, I am Anna -> Option A
Quick Check:
Class property set correctly = 'Hi, I am Anna' [OK]
Hint: Constructor sets properties; methods use them [OK]
Common Mistakes:
Forgetting to assign constructor parameter to this.name
Expecting undefined because of missing this
Confusing method return with console.log output
4. Identify the error in this TypeScript class declaration:
class Car {
model: string;
constructor(model) {
this.model = model;
}
display() {
console.log('Model: ' + this.model);
}
}
medium
A. Property 'model' should be private
B. Missing return type for display method
C. Constructor should not have parameters
D. Missing type annotation for constructor parameter 'model'
Solution
Step 1: Check constructor parameter types
In TypeScript, constructor parameters should have type annotations; here, model lacks a type.
Step 2: Verify other parts
The display method does not require a return type annotation since it returns void implicitly.
Final Answer:
Missing type annotation for constructor parameter 'model' -> Option D
Quick Check:
Constructor parameters need types = Missing type annotation for constructor parameter 'model' [OK]
Hint: Always type constructor parameters in TypeScript [OK]
Common Mistakes:
Omitting parameter types in constructors
Thinking methods must always declare return types
Assuming properties must be private by default
5. You want to create a TypeScript class Calculator with a method add that takes two numbers and returns their sum. Which code correctly implements this with proper types and usage?
hard
A. class Calculator {
add(a, b) {
return a + b;
}
}
const calc = Calculator();
console.log(calc.add(5, 3));
B. class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3));
C. class Calculator {
add(a: number, b: number) {
console.log(a + b);
}
}
const calc = new Calculator();
calc.add(5, 3);
D. class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
const calc = new Calculator();
console.log(calc.add('5', '3'));
Solution
Step 1: Check method declaration and types
class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3)); declares add with parameters typed as numbers and return type number, which is correct.
Step 2: Verify object creation and method call
class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3)); creates an instance with new Calculator() and calls add(5, 3), which returns 8.
Final Answer:
Correct class with typed method and proper usage -> Option B
Quick Check:
Typed method + new instance + correct call = class Calculator {
add(a: number, b: number): number {
return a + b;
}
}
const calc = new Calculator();
console.log(calc.add(5, 3)); [OK]
Hint: Use 'new' to create class instances and type parameters [OK]
Common Mistakes:
Calling class without 'new'
Omitting parameter types
Passing wrong argument types (like strings instead of numbers)
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.