TypeScript基本类型之typeof和keyof怎么使用
李肇芬 2023-08-08编程经验
前言在TypeScript中,为了规范代码和提供更准确的类型推导,我们可以使用typeof和keyof这两个操作符。typeof操作符可以用来获取一个变量的类型,keyof操作
前言
在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,我们可以提高代码的可靠性和可维护性,从而提高开发效率和代码质量。 很赞哦! ()