[[TypeScript]]の[[インデックスアクセス型 (TypeScript)|インデックスアクセス型]]には値を指定できない。 ```ts interface Human { id: number; name: string; } const id = "id" type Id = Human[id]; // Type 'id' cannot be used as an index type.(2538) ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyywAJgFzIhYBG0A3EVXJhJQM5hSgDmjAvgQIIA9iE4lSyALzIARGTkEwATwAOKAJJTZGbCADaZALqMA9GeQAVdSgDkZO8gQ4QIsMjrJ07CFLjsyDgkIKQQAB7IqhoAdAAUAEwArADMABwAlARAA">Playground</a></button> `Human["id"]`の`"id"`は値ではない。[[文字列リテラル型 (TypeScript)|文字列リテラル型]]。[[インデックスアクセス型 (TypeScript)|インデックスアクセス型]]には型しか指定できないためである。 [[typeof型演算子]]を使って[[文字列リテラル型 (TypeScript)|文字列リテラル型]]に変換されていればOK。 ```ts interface Human { id: number; name: string; } const id = "id"; type Id = Human[typeof id]; // ^? type Id = number ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyywAJgFzIhYBG0A3EVXJhJQM5hSgDmjAvgQIIA9iE4lSyALzIARGTmMwATwAOKAJJTZGbCADaqjSJiSAuowD0V4sgB6AfgJA">Playground</a></button> もしくは[[型エイリアス (TypeScript)|型エイリアス]]を使うか。 ```ts interface Human { id: number; name: string; } type id = "id"; type Id = Human[id]; // ^? type Id = number ``` <button class="playground"><a href="https://www.typescriptlang.org/play?#code/JYOwLgpgTgZghgYwgAgBIFcC2cTIN4BQyywAJgFzIhYBG0A3EVXJhJQM5hSgDmjAvgQJgAngAcUZZAF5kAIjJzGoicgCSpGWiw4A2mQC6jAPTHiyAHoB+AkA">Playground</a></button>