Bird
Raised Fist0
Typescriptprogramming~10 mins

Partial type in Typescript - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a variable that can have some or all properties of the interface.

Typescript
interface User {
  name: string;
  age: number;
}

let user: [1]<User> = { name: "Alice" };
Drag options to blanks, or click blank then click option'
APick
BRequired
CReadonly
DPartial
Attempts:
3 left
💡 Hint
Common Mistakes
Using Required instead of Partial, which makes all properties mandatory.
Using Pick which requires specifying keys.
Using Readonly which only makes properties immutable.
2fill in blank
medium

Complete the code to create a function that accepts a partial User object.

Typescript
function updateUser(user: User, updates: [1]<User>): User {
  return { ...user, ...updates };
}
Drag options to blanks, or click blank then click option'
AReadonly
BPartial
CRequired
DPick
Attempts:
3 left
💡 Hint
Common Mistakes
Using Required which expects all properties.
Using Readonly which does not allow changes.
Using Pick without specifying keys.
3fill in blank
hard

Fix the error in the function parameter type to accept partial updates.

Typescript
function modifySettings(settings: [1]<Settings>) {
  // modify settings
}
Drag options to blanks, or click blank then click option'
APartial
BReadonly
CRequired
DPick
Attempts:
3 left
💡 Hint
Common Mistakes
Using Required which expects all properties.
Using Readonly which prevents modification.
Using Pick without specifying keys.
4fill in blank
hard

Fill both blanks to create a partial update function with correct typing.

Typescript
function updateProfile(profile: User, changes: [1]<[2]>) {
  return { ...profile, ...changes };
}
Drag options to blanks, or click blank then click option'
APartial
BReadonly
CUser
DSettings
Attempts:
3 left
💡 Hint
Common Mistakes
Using Readonly instead of Partial.
Using the wrong interface type.
Mixing up the order of blanks.
5fill in blank
hard

Fill all three blanks to define a function that merges partial settings into defaults.

Typescript
function mergeDefaults(defaults: [1], overrides: [2]<[3]>) {
  return { ...defaults, ...overrides };
}
Drag options to blanks, or click blank then click option'
ASettings
BPartial
DReadonly
Attempts:
3 left
💡 Hint
Common Mistakes
Using Readonly instead of Partial for overrides.
Using different types for defaults and overrides.
Confusing the order of blanks.

Practice

(1/5)
1.

What does the Partial utility type do in TypeScript?

easy
A. Changes all properties to readonly
B. Makes all properties of a type required
C. Removes all properties from a type
D. Makes all properties of a type optional

Solution

  1. Step 1: Understand the purpose of Partial

    The Partial type is designed to take an existing type and make all its properties optional.
  2. Step 2: Compare with other utility types

    Unlike Required which makes all properties mandatory, Partial does the opposite by making them optional.
  3. Final Answer:

    Makes all properties of a type optional -> Option D
  4. Quick Check:

    Partial = optional properties [OK]
Hint: Partial makes properties optional, not required or readonly [OK]
Common Mistakes:
  • Confusing Partial with Required
  • Thinking Partial removes properties
  • Assuming Partial makes properties readonly
2.

Which of the following is the correct syntax to create a partial type of User?

interface User { name: string; age: number; }
easy
A. type PartialUser = Partial<User>;
B. type PartialUser = User.Partial;
C. type PartialUser = Partial<User> = {};
D. type PartialUser = Partial<User> {};

Solution

  1. Step 1: Recall correct Partial syntax

    The correct way to create a partial type is using Partial<Type> syntax.
  2. Step 2: Check each option

    type PartialUser = Partial<User>; uses correct syntax. Options A, B, and D have invalid or incorrect TypeScript syntax.
  3. Final Answer:

    type PartialUser = Partial<User>; -> Option A
  4. Quick Check:

    Partial syntax = Partial<Type> [OK]
Hint: Use Partial<Type> to create partial types [OK]
Common Mistakes:
  • Using dot notation instead of generic syntax
  • Adding extra equals or braces incorrectly
  • Confusing Partial with object literals
3.

What is the output of this TypeScript code?

interface Product { id: number; name: string; price: number; }
const updateProduct: Partial<Product> = { price: 99 };
console.log(updateProduct);
medium
A. { id: undefined, name: undefined, price: 99 }
B. { price: 99 }
C. Error: Missing properties id and name
D. {}

Solution

  1. Step 1: Understand Partial effect on properties

    Partial makes all properties optional, so you can provide only some properties.
  2. Step 2: Check the object assigned

    The object has only price: 99. This is valid and prints exactly that.
  3. Final Answer:

    { price: 99 } -> Option B
  4. Quick Check:

    Partial allows partial objects [OK]
Hint: Partial lets you omit properties safely [OK]
Common Mistakes:
  • Expecting all properties to appear with undefined
  • Thinking missing properties cause errors
  • Assuming Partial creates empty objects
4.

Identify the error in this code snippet:

interface Settings { theme: string; fontSize: number; }
const newSettings: Partial<Settings> = { theme: 'dark' };
newSettings.fontSize.toFixed(2);
medium
A. Error: toFixed is not a function
B. No error, code runs fine
C. Error: fontSize might be undefined
D. Error: theme property missing

Solution

  1. Step 1: Analyze Partial type effect

    Partial makes all properties optional, so fontSize may be undefined.
  2. Step 2: Check method call on possibly undefined

    Calling toFixed on possibly undefined fontSize causes a runtime error.
  3. Final Answer:

    Error: fontSize might be undefined -> Option C
  4. Quick Check:

    Partial properties can be undefined [OK]
Hint: Check for undefined before using Partial properties [OK]
Common Mistakes:
  • Ignoring optional property undefined possibility
  • Assuming all properties exist
  • Confusing method errors with type errors
5.

You have this interface and partial update function:

interface Profile { username: string; email: string; age: number; }
function updateProfile(profile: Profile, updates: Partial<Profile>): Profile {
  return { ...profile, ...updates };
}

What is the result of calling updateProfile({ username: 'alice', email: 'a@example.com', age: 30 }, { email: 'alice@new.com' })?

hard
A. { username: 'alice', email: 'alice@new.com', age: 30 }
B. { username: 'alice', email: 'a@example.com', age: 30 }
C. Error: Cannot spread Partial type
D. { email: 'alice@new.com' }

Solution

  1. Step 1: Understand spread with Partial

    The function merges the original profile with updates, overwriting provided fields.
  2. Step 2: Apply the update

    The email field is replaced with the new value, others remain unchanged.
  3. Final Answer:

    { username: 'alice', email: 'alice@new.com', age: 30 } -> Option A
  4. Quick Check:

    Spread merges updates over original [OK]
Hint: Spread merges partial updates over full object [OK]
Common Mistakes:
  • Thinking Partial cannot be spread
  • Expecting original email to remain
  • Returning only updates without original fields
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