'"Type 'string' cannot be used to index type 'T'" when using generics
I'm using generics in TypeScript (v4.5.4) and the following code throws an error:
function foo<T extends Record<string, boolean>>(obj: T, key: string) {
obj[key] = true; // ERROR: Type 'string' cannot be used to index type 'T'
}
This makes no sense to me whatsoever, it's even more nonsensical given the fact that the following actually works with no errors:
const key: string = '';
const obj: Record<string, boolean> = {};
obj[key] = true; // NO ERROR
While as far I'm concerned the first code snippet is effectively doing the exact same thing.
I would like to know why this happens, and also how I could rectify the problem in the first snippet.
Solution 1:[1]
As far as I know, this is a bug, which was discussed pretty deeply on GitHub. Here's the link: https://github.com/microsoft/TypeScript/issues/47357
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dominik Chudy |
