TS如何限制对象的索引类型

101 阅读1分钟
背景
  1. 限制对象的索引类型
  2. 对象的索引类型提示
原因

索引类型不能直接使用字面量类型或者泛型

示例
type LiteralType = 'foo' | 'bar'
//错误
type ObjType = {
  [index: LiteralType]: string
}
//错误
interface ObjType {
  [key in LiteralType]: string
}
`//正确`
type ObjType = {
  [key in LiteralType]: string
}
const obj: ObjType = {
  foo: 'hello',
  bar: 'world'
}