Typescript Record<string, Value>[key] 应该返回 `Value | 未定义`,不是吗?

vat*_*mat 22 typescript

为什么Record<string, Value>[key]只返回Value而不考虑缺失值?IMO 它应该返回Value|undefined,对吗?我应该在 Typescript GitHub 存储库上记录错误吗?

interface User {
  name: string
  age: number
  done: boolean
}

const usersMap: Record<string, User> = {}

//runtime exception: TypeError: usersMap[1] is undefined
const firstAge = usersMap['1'].age
Run Code Online (Sandbox Code Playgroud)

Joh*_*ika 22

将其添加到您的 tsconfig 将导致未知键的 TypeScript 错误:

"noUncheckedIndexedAccess": true
Run Code Online (Sandbox Code Playgroud)

来源: https: //www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess