Microsoft/TypeScript

Literal tested as key of a certain type cannot be used as an index type

Open

#57,109 opened on 2024幎1月20日

GitHub で芋る
 (1 comment) (2 reactions) (0 assignees)TypeScript (6,726 forks)batch import
BugDomain: Indexed Access TypesHelp Wanted

Repository metrics

Stars
 (48,455 stars)
PR merge metrics
 (平均マヌゞ 6d 17h) (30d で 9 merged PRs)

説明

🔎 Search Terms

"literal", "extends", "keyof", "cannot be used to index type", "conditional"

🕗 Version & Regression Information

Versions: ^5.0 (regression)

⏯ Playground Link

https://www.typescriptlang.org/play?ts=5.3.3&ssl=7&ssc=54&pln=1&pc=1#code/C4TwDgpgBAKlC8UDeBYAUFKBrAXFAziALYBGA9gDYA06mZwAFhAE57mUQCGAdlVAPT8oPek2bYIIAhAhF8UZhACOAVwCWigCZQAZmXGNoJFQHMowMsLCROzdAF906QbHDQA5ACIsn91ADGPNz0UCTQKvgQ2pzyPFBq3JoQAB7mbgB0ABQATACsAMwAHACU6KCQUADCCFDuWH4pwBCJ8liSZDqwUAD8sADade4AulB43BAAbiwA3AJCPCBAA

💻 Code

type T = {
  k: symbol,
  other: boolean, // another key seems required for the bug to appear
}

// Type '"k"' cannot be used as an index type.(2538)
type C = 'k' extends keyof T ? T['k'] : never; // any

🙁 Actual behavior

An error is produced in the positive clause of the conditional type. The resulting type is incorrect.

🙂 Expected behavior

No error.

Additional information about the issue

No response

コントリビュヌタヌガむド