TypeScript,类型查找(lookup types)

类型查找,通常称为 Lookup Types,是 TypeScript 中一种利用已知类型的键来查找对应值的机制。通过使用 TypeScript 的索引类型和 keyof 操作符,我们可以根据已知的键获取对象或映射类型中相应的值类型。

以下是一个简单的示例:

interface Person {
  name: string;
  age: number;
  address: string;
}

type PersonKey = keyof Person;
// PersonKey 的类型为 "name" | "age" | "address"

let propertyName: PersonKey = "name";
let propertyValue: Person[typeof propertyName]; // 等价于 Person["name"]
// propertyValue 的类型为 string

在这个例子中,PersonKeykeyof Person 的结果,表示 Person 接口的所有属性名的联合类型。然后,通过 Person[typeof propertyName],我们可以获取 Person 接口中 propertyName 属性对应的值类型。

Lookup Types 的应用场景主要有两种:

1. 获取对象属性值类型

interface Car {
  make: string;
  model: string;
  year: number;
}

type CarMake = Car["make"]; // 类型为 string
type CarYear = Car["year"]; // 类型为 number

在这个例子中,通过 Car["make"]Car["year"],我们可以直接获取 Car 接口中 makeyear 属性对应的值类型。

2. 从映射类型中获取值类型

type PersonProps = {
  name: string;
  age: number;
  address: string;
};

type Person = {
  [K in keyof PersonProps]: PersonProps[K];
};

const person: Person = {
  name: "John",
  age: 30,
  address: "123 Main St",
};

type PersonAddress = Person["address"]; // 类型为 string

在这个例子中,通过使用映射类型 [K in keyof PersonProps],我们创建了一个与 PersonProps 类型相同的新类型 Person。然后,通过 Person["address"],我们可以获取 Person 类型中 address 属性对应的值类型。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值