Why does undefined cannot be used as an index type?

Viewed 164

My question is not about the meaning of the meaning of the

Type 'undefined' cannot be used as an index type

typescript error, as in this question and this one - I know that it happens when doing someObject[someValueThatMightBeUndefined].

Rather, I want to know why TypeScript prevents this, as undefined can be used to index objects:

const foo = {}
foo[undefined] = 10
foo[undefined] // 10

My best guess is that using undefined as a key is a bad idea because undefined and 'undefined' are not the same, yet these

foo[undefined]
foo['undefined']
foo.undefined

point to the same property. But I'm not entirely satisfied with this answer because TypeScript should prevent code that breaks, not bad code.

0 Answers
Related