TS2564: Property 'x' has no initializer and is not definitely assigned in the constructor

With strictPropertyInitialization on, a class property declared without ? or a default isn’t set in the constructor.

Seen on: TypeScript

Meaning

Common in Angular components, TypeORM/NestJS entities and classes filled later by frameworks (dependency injection, decorators, ngOnInit). Choose: initialise it, make it optional, or tell TypeScript it’s assigned elsewhere with the definite-assignment assertion (!).

Common causes

  • Property set in ngOnInit/lifecycle method instead of constructor
  • Framework sets the property (decorators, ORM)
  • Property genuinely may be missing

⚡ Quick fix

  1. Give a default value
  2. Mark it optional (name?: string)
  3. Use name!: string when a framework guarantees it

Detailed fix by platform

TypeScript

  1. typescript
    @Input() title!: string;          // set by Angular
    items: Item[] = [];                // default value
    description?: string;              // really optional

How to diagnose

  1. Who sets it — Constructor, lifecycle hook or framework?
  2. Config — strictPropertyInitialization in tsconfig

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.