如何快速定义对象的key类型

75 阅读1分钟

如何快速定义对象的key类型

假如有一个对象:

const student = {
    name: 'Tom',
    age:12
}

接着,定义一个useState控制获取对象的key

const [key, setKey] = useState("name")

然后,用这种方式读取属性值

const result = student[key]

会报错:在类型 "****" 上找不到具有类型为 "string" 的参数的索引签名。

可以这么解决:收窄key类型:

const [key, setKey] = useState<"name"|"age">("name")

但是,如果key很多呢? 其实可以通过泛型解决:

const [key, setKey] = useState<keyof typeof student>("name")