要求:实现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-error
MyPick<Todo, 'title' | 'completed' | 'invalid'>,
]
interface Todo {
title: string
description: string
completed: boolean
}
interface Expected1 {
title: string
}
interface Expected2 {
title: string
completed: boolean
}
js实现思路:
- 返回一个对象
- 遍历forEach
-
T[item]取值
-
看看item在不在T中
js实现:
function MyPick(T,K){
const obj={}
K.forEach