Skip to main content

Pick [union, built-in]

这是个啥呢? 我理解为兼容对象的属性

// 假如你有一下这两个对象,你怎样支持他们的类型

interface Todo {
title: string
description: string
completed: boolean
}

type TodoPreview = MyPick<Todo, 'title' | 'completed'>

const todo: TodoPreview = {
title: 'Clean room',
completed: false,
}

/**
* 答
* 1 首先 MyPick 有两个参数 第一个是泛型,也就是传入一个对象,第二个参数 就是类型映射 keyof ,是把 K 约束进 T 里定义key
* 2 键(key):P 就是 key值 K的key值也就是属性名 以Todo为例 title description completed
* 3 值(value):值为类型T中的P的类型 以Todo为例 title的值就是string description的值也是string completed的值就是bool
*/
type MyPick<T, K extends keyof T>{
[P in K]: T[P]
}