c语言编程笔录

首页 >   > 笔记大全

笔记大全

TypeScript基本类型之typeof和keyof怎么使用

更新时间:2023-10-02

前言

在TypeScript中,为了规范代码和提供更准确的类型推导,我们可以使用typeof和keyof这两个操作符。typeof操作符可以用来获取一个变量的类型,keyof操作符可以用来获取一个类型的所有属性名。本文将详细介绍typeof和keyof的使用方法和注意事项。

typeof操作符

typeof操作符可以用来获取一个变量的类型。它可以应用于变量、属性和函数。使用typeof操作符可以在编译时获取类型信息,从而提供代码的可读性和可维护性。 示例1:获取变量的类型
let num = 5;
console.log(typeof num);  // 输出:number

let str = 'Hello';
console.log(typeof str);  // 输出:string
示例2:获取函数的类型
function add(a: number, b: number): number {
  return a + b;
}

type AddFunc = typeof add;
let add4: AddFunc = add;
console.log(add4(2, 2));  // 输出:4
注意事项: - 使用typeof获取的类型信息是在编译时确定的,不能在运行时改变。 - typeof操作符不能获取属性的类型,而只能获取属性值的类型。

keyof操作符

keyof操作符可以获取一个类型的所有属性名,并将它们作为字符串字面量的联合类型返回。使用keyof操作符可以遍历一个类型的属性,从而进行一些类型安全的操作。 示例1:获取类型的所有属性名
type Person = {
  name: string;
  age: number;
};

type PersonKeys = keyof Person;
let personName: PersonKeys = 'name';
let personAge: PersonKeys = 'age';
let personEmail: PersonKeys = 'email';  // 编译错误:类型"email"的参数不能赋给类型"keyof Person"的参数
示例2:通过keyof操作符进行类型安全的操作
type Config = {
  debug: boolean;
  logLevel: string;
};

function getConfigValue(key: keyof Config): any {
  // 根据属性名获取配置的值
}

let value = getConfigValue('debug');  // 正确
let value2 = getConfigValue('language');  // 编译错误:类型"language"的参数不能赋给类型"keyof Config"的参数
注意事项: - keyof操作符返回的属性名是字符串字面量的联合类型,我们可以使用它进行类型匹配、属性访问和遍历等操作。 - keyof操作符只能应用于类型,而不能应用于变量和值。

总结

通过typeof和keyof操作符,我们可以在TypeScript中更准确地获取变量的类型和对象的属性名。typeof操作符可以得到变量的类型,而keyof操作符可以获取类型的所有属性名。这两个操作符都可以在编译时获取类型信息,从而提供代码的可读性和可维护性。使用typeof可以方便地进行类型判断和类型推导,而keyof可以进行类型安全的属性访问和遍历。在使用这两个操作符时,需要注意它们的使用场景和限制,以避免出现编译错误和运行时错误。通过合理运用typeof和keyof,我们可以提高代码的可靠性和可维护性,从而提高开发效率和代码质量。