TypeScript Error: “Object literal may only specify known properties” (Fix Explained)

While working with TypeScript, you might encounter this error:

Object literal may only specify known properties, and 'age' does not exist in type 'User'

This error can be confusing for beginners.

In this guide, you’ll learn:

  • What this error means
  • Why it happens
  • How to fix it (step-by-step)
  • Common mistakes to avoid

What Does This Error Mean?

👉 In simple terms:

TypeScript is telling you that you are adding a property that is not defined in the type or interface


Example That Causes the Error

interface User {
name: string;
}

const user: User = {
name: "Raju",
age: 25, // ❌ Error here
};

👉 Error:

Object literal may only specify known properties, and 'age' does not exist in type 'User'

Why This Error Happens

TypeScript uses strict type checking.

👉 It ensures that:

  • You only use properties defined in the type
  • No extra or unexpected data is added

How to Fix This Error


Fix 1: Add the Missing Property

If the property is valid, add it to the interface:

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

👉 Now it works ✅


Fix 2: Remove Extra Property

If the property is not needed:

const user: User = {
name: "Raju",
};

Fix 3: Use Index Signature (Flexible Objects)

If object can have dynamic properties:

interface User {
name: string;
[key: string]: any;
}

👉 Allows extra properties ✅


Fix 4: Use Type Assertion (Use Carefully)

const user = {
name: "Raju",
age: 25,
} as User;

⚠️ This tells TypeScript to ignore extra properties
👉 Use only when you are sure


Fix 5: Assign Object to Variable First

const temp = {
name: "Raju",
age: 25,
};

const user: User = temp;

👉 This may bypass strict checking in some cases


⚠️ Common Mistakes


❌ Typo in property name

namee: "Raju" // ❌ wrong

❌ Forgetting to update interface

👉 Adding new fields but not updating type


❌ Overusing any

👉 Removes TypeScript benefits


Real-World Scenario

Imagine:

👉 API returns:

{
"name": "Raju",
"age": 25
}

But your interface is:

interface User {
name: string;
}

👉 You’ll get this error


Best Practices

  • Keep types updated
  • Avoid unnecessary properties
  • Use strict typing
  • Avoid overusing any

Interview Tip

If asked:

“What is this error?”

👉 Answer:

“It occurs when an object contains properties that are not defined in its type or interface.”


Final Summary

  • TypeScript enforces strict object structure
  • Extra properties cause this error
  • Fix by updating type or removing extra fields
  • Use index signature for flexible objects

Related Articles


💡 Facing more TypeScript errors? Subscribe to get simple fixes, real-world examples, and developer-friendly explanations. Happy Coding!