TS18009

The operand of a 'delete' operator must be optional.

Broken Code ❌

interface User {
  name: string;
  age: number;
}
 
const user: User = { name: 'John', age: 30 };
delete user.age;
tsconfig.json
{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

Fixed Code ✔️

interface User {
  name: string;
  age?: number;
}
 
const user: User = { name: 'John', age: 30 };
delete user.age;
tsconfig.json
{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

Alternative:

interface User {
  name: string;
  age: number | undefined;
}
 
const user: User = { name: 'John', age: 30 };
user.age = undefined;
tsconfig.json
{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

Properties must be optional to be deleted safely. Mark the property with ? or use undefined instead of delete.