329 字
2 分钟
难住了,我不会TypeScript
type-challenges 是一个由 Anthony Fu 发起和维护的创新项目,目前 Github 上拥有 37k+ star。这个项目汇聚并提供一系列精彩的 TypeScript 编程挑战,包含从基础到高级的各种难度级别的题目,最高难度达到了恐怖的地狱级别。
今天来尝试挑战一下,先从最简单的热身开始。
开始挑战仅需点击接受挑战
按钮,之后你将被引导至 Playground 界面。你需要根据给定要求填写正确的类型定义,一旦你的解答通过了测试,就意味着挑战成功。
热身任务相对简单,只需将类型any
更改为string
。接下来是简单难度的第一个任务:创建一个自定义的 Pick 类型。示例代码如下:
interface Todo {
title: string
description: string
completed: boolean
}
type TodoPreview = MyPick<Todo, 'title' | 'completed'>
const todo: TodoPreview = {
title: 'Clean room',
completed: false,
}
/* 你的代码 */
type MyPick<T, K> = any
虽然标记为简单,但这个任务仍具有一定的挑战性,没有熟练掌握 TypeScript 使用估计解不出来。结果如下,看看你做出来了吗?
type MyPick<T, K extends keyof T> = {
[P in K]: T[P]
}
快去刷题挑战吧,相信通关之后你也是 TypeScript 高手了。入口:https://github.com/type-challenges/type-challenges