【ts类型体操】00004-easy-pick

news/2025/2/12 3:26:28/

要求:实现TS内置的Pick<T,K> 从类型T中选择出属性K,构造一个新的类型

type MyPick<T, K>=any
import type { Equal, Expect } from '@type-challenges/utils'type cases = [Expect<Equal<Expected1, MyPick<Todo, 'title'>>>,Expect<Equal<Expected2, MyPick<Todo, 'title' | 'completed'>>>,// @ts-expect-errorMyPick<Todo, 'title' | 'completed' | 'invalid'>,
]interface Todo {title: stringdescription: stringcompleted: boolean
}interface Expected1 {title: string
}interface Expected2 {title: stringcompleted: boolean
}


js实现思路:

  1. 返回一个对象
  2. 遍历forEach
  3. T[item]取值

  4. 看看item在不在T中


 js实现:

function MyPick(T,K){const obj={}K.forEach(item=>(if(item in T){ //T 中是否有 item 属性obj[item]=T[item]}))return obj;}

ts实现: 【模仿js实现思路实现】

  1. 返回一个对象  
  2. 遍历forEach mapped 
  3. T[item]取值 indexed

  4. 看看item在不在T中 keyof

type MyPick<T, K extends keyof T> = {[P in K]:T[P]
}

题目:type-challenges/README.zh-CN.md at main · type-challenges/type-challenges · GitHubCollection of TypeScript type challenges with online judge - type-challenges/README.zh-CN.md at main · type-challenges/type-challengeshttps://github.com/type-challenges/type-challenges/blob/main/questions/00004-easy-pick/README.zh-CN.md

学习:

TypeScript: Handbook - The TypeScript Handbookhttps://www.typescriptlang.org/docs/handbook/intro.html


http://www.ppmy.cn/news/812800.html

相关文章

胖子的纠结

02.* Copyright (c) 2013, 烟台大学计算机学院 03.* All rights reserved. 04.* 作 者&#xff1a;石尧 05.* 完成日期&#xff1a;2014 年 2 月 28 日 06.* 版 本 号&#xff1a;v1.0 07.*/ #include <iostream> #include <string.h> struct xinxi {char name[…

618运动好物清单、必买运动装备推荐

618已经进行得如火如荼&#xff0c;不知道你们是否已经将心动好物收入囊中。作为一个运动健身爱好者&#xff0c;这种薅羊毛的时候我肯定不会放过&#xff01;下边我给大家整理了一份自己的购物清单&#xff0c;身边达人大神好评推荐&#xff0c;大家可以抄作业~ 1、南卡runne…

防汗耳机选什么牌子好、适合运动佩戴的运动耳机推荐

运动和音乐是很多人生活中不可或缺的元素&#xff0c;一款好的耳机可以让运动更加有激情&#xff0c;也能更好地享受运动的乐趣。对于喜欢运动的人来说&#xff0c;选择一款佩戴舒适、稳固、防水的运动耳机是非常重要的。今天&#xff0c;我们分享一下我用过的5款最好用的运动耳…

高品质运动耳机哪款更好用、运动耳机最好的牌子推荐

在运动的时候大家都会选择戴上耳机&#xff0c;用音乐来”调味“&#xff0c;让跑步的过程不那么枯燥乏味。说到运动耳机&#xff0c;除了老生常谈的音质以外&#xff0c;耳机的材质、耳机的工艺&#xff0c;耳机的佩戴稳固性等&#xff0c;也都在影响着用户的体验&#xff0c;…

大胖子走迷宫

题目描述 小明是个大胖子&#xff0c;或者说是个大大胖子&#xff0c;如果说正常人占用 1 \times 111 的面积&#xff0c;小明要占用 5\times 555 的面积。 由于小明太胖了&#xff0c;所以他行动起来很不方便。当玩一些游戏时&#xff0c;小明相比小伙伴就吃亏很多。 小明的…

哪款耳机适合运动、市面上很火爆的运动耳机推荐

作为一位运动爱好者&#xff0c;跑步是最简单粗暴的运动方式&#xff0c;但是当我们一个人在公园或者是操场跑步时&#xff0c;会让我感觉到跑步就是一项枯燥无味的健身运动&#xff01;而此时最有效的缓解方法&#xff0c;就是在跑步中收听舒缓的音乐或者听FM电台等节目。那么…

男装搭配2

男士在着装上应注意&#xff1a; 颜色&#xff1a; 整体着装从上至下不能超过三种颜色&#xff0c;这样从线条整体上看会更流畅 、更典雅、否则会显得杂乱而没有整体感。 款式&#xff1a; 男士穿戴不是必须很时尚或很流行&#xff0c;只要简洁大方&#xff0c;颜色沉稳&#x…

做一个优雅的胖子吧

其实这题目是写了很久才补上的&#xff0c;也就是说&#xff0c;本人一开始写这文章的时候&#xff0c;并没有一个明确的目标。 就是心中觉得该写点什么东西了&#xff0c;才开始写的。 也算是对这三个月来&#xff0c;从20130906到20131206这段时间的一个总结吧。 &#xf…