ts keyof 用法
时间: 2024-10-29 16:14:10 浏览: 6
在TypeScript中,`keyof`关键字是一个元类型操作符,用于获取一个类型的键类型(Keys)。当你想要获取某个对象类型的所有属性名(字符串常量),而不是其值类型时,可以使用`keyof`。它的基本语法如下:
```typescript
type KeysOf<T> = keyof T;
```
这里,`T`是你想要提取键类型的任意类型,如`{ name: string, age: number }`,`keyof T`会返回一个类型`"name" | "age"`,表示这个对象类型的键集合。
例如:
```typescript
interface Person {
firstName: string;
lastName: string;
age: number;
}
type Props = keyof Person; // Props 类型就是 "firstName" | "lastName" | "age"
```
`keyof`常用于类型保护、条件类型以及创建枚举类型等场景。例如,你可以用`keyof`来判断一个对象是否有特定的属性:
```typescript
let person: Person;
if ("firstName" in person) {
console.log(person.firstName); // 类型安全地访问 firstName 属性
}
```
相关问题
实现一个ts类型,通过传入指定函数和属性名称,返回这个函数返回值中指定属性的类型
好的,这是一个技术问题,让我来帮您解答。
您可以使用 TypeScript 的 ReturnType 工具类型来实现此功能。例如:
```
function getPropertyType<T, K extends keyof ReturnType<T>>(fn: T, key: K): ReturnType<T>[K] {
return fn()[key];
}
// 示例用法
function getPerson() {
return {
name: '张三',
age: 30,
occupation: '工程师'
}
}
const nameType = getPropertyType(getPerson, 'name');
console.log(nameType); // 输出 string 类型
```
在这个例子中,我们定义了一个 `getPropertyType` 函数,它接受一个泛型函数 `fn` 和一个属性名称 `key`。然后使用 ReturnType 工具类型获取 `fn` 函数返回值的类型,并从中取出指定属性 `K` 的类型。
希望这个例子能够对您有所帮助!
阅读全文