const obj = {
a: 1,
b: 2,
...
}
interface types = {
key: 'a' | 'b'
}
有没有快捷的方法获取object的key了?
类似于
interface types = {
key: object.keys(obj) // 这种写法肯定是错的
}
const obj = {
a: 1,
b: 2,
...
}
interface types = {
key: 'a' | 'b'
}
有没有快捷的方法获取object的key了?
类似于
interface types = {
key: object.keys(obj) // 这种写法肯定是错的
}
使用映射类型,关键词为 type,不是 interface:
const obj = {
a: 1,
b: 'str'
}
type GetObj = {
[K in keyof typeof obj]: () => typeof obj[K]
}
// type GetObj = {
// a: () => number;
// b: () => string;
// }
使用 typeof 将值转化为类型,获取 obj 的类型
使用 keyof 获取 key 的类型
使用 in 进行遍历,获取每个单独的 key 放入 K 中,将其重新映射为函数类型
文档:TypeScript: Documentation - Mapped Types
将
keyof
与typeof
结合使用: