29、TypeScript高级泛型类型全解析

TypeScript高级泛型类型全解析

1. 单一映射中的转换组合

在类型映射中,可以将多个转换组合在一起,对属性应用多个更改。以下是一个示例代码:

import { City, Person, Product, Employee } from "./dataTypes";
type CustomMapped<T, K extends keyof T> = {
    readonly[P in K]?: T[P]
};
type BuiltInMapped<T, K extends keyof T> = Readonly<Partial<Pick<T, K>>>;
let p1: CustomMapped<Product, "name"> = { name: "Kayak" };
let p2: BuiltInMapped<Product, "name"| "price">
    = { name: "Lifejacket", price: 48.95};
console.log(`Custom mapped type: ${p1.name}`);
console.log(`Built-in mapped type: ${p2.name}, ${p2.price}`);

在自定义类型映射中,问号和 readonly 关键字可以在同一转换中应用,并且可以通过名称选择属性。映射还可以链式组合,如 Pick Partial

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值