记录下 typescript 使用 typeof 和 keyof 将一个对象所有的key定义为一个类型

typeof

const obj = {
    
    
    name: '测试',
    id: 1,
    children: {
    
    
        name: '测试-子',
        id: 2
    }
}
// 定义类型
type ObjType = typeof obj

// 这个时候的 ObjType 的类型为 {name: string, id: number, children: {name: string, id: number}}

keyof

interface Type1 {
    
    
	name: string
	id: number
}

type Type2 = keyof Type1

// 这个时候的 Type2 的的值就为  'name' | 'id'

将keyof 和 typeof 组合使用

type ObjType = {
    
    
    [key in keyof typeof obj]: typeof obj[key]
}

// 这样就可以得到一个key为 obj 所有key的类型了。value为key对应的value类型

Guess you like

Origin blog.csdn.net/chendf__/article/details/121334001