HiveBrain v1.2.0
Get Started
← Back to all entries
debugjavascriptCriticalCanonical

What is the logic behind the TypeScript error "The operand of a 'delete' operator must be optional"?

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
typescripterroroperanddeletemustbehindtheoptionallogicoperator

Problem

This is the new error that is coming in typescript code.

I am not able to realize the logic behind it

Documentation

/*When using the delete operator in strictNullChecks, 
the operand must now be any, unknown, never, or be optional 
(in that it contains undefined in the type). Otherwise, use of the delete operator is an error.*/

interface Thing {
  prop: string;
}

function f(x: Thing) {
  delete x.prop; // throws error = The operand of a 'delete' operator must be optional.
}

Solution

I am not able to realize the logic behind it

The logic as I understand is the following:

Interface Thing is a contract asking to have a (non-null, non-undefined) prop as a string.

If one removes the property, then the contract is not implemented anymore.

If you want it still valid when removed, just declare it as optional with a ?: prop?: string

I'm actually surprised that this was not causing error in earlier versions of TypeScript.

Context

Stack Overflow Q#63702057, score: 281

Revisions (0)

No revisions yet.