keyof 后只能接类型不能接值。配合 typeof 使用。
1. 对象类型的键集合
获取一个对象类型中所有键的类型,形成一个联合类型。
// 枚举类型
enum Estatus {
error = -1,
init = 0,
checking = 1,
}
type Tstatus = keyof typeof Estatus;
// "error" | "init" | "checking"
const _status: Tstatus = "checking";
// 接口类型
interface Iuser {
username: string;
password: string;
}
// "username" | "password"
type Tuser = keyof Iuser;
const user: Tuser = "username";
2. 增强函数的类型安全性
在函数参数中使用 keyof 来限制可接受的键的类型,确保函数操作的键是对象实际存在的合法键。
function printProperty(obj: Point, key: keyof Point) {
console.log(obj[key]);
}
3. 用于类型别名和接口扩展
帮助定义更复杂和精确的类型。