有了前面文章TS的基础后,我们来几个实战的练习。以下所有的练习都可以在代码最后找到答案,我建议你一定要自己实现一遍才能有最多的收获。
代码地址:https://www.typescriptlang.org/docs/handbook/utility-types.html
下面的代码中,我们首先定义类型 Todo,有 title、desc 和 done 三个属性:
interface Todo {
title: string
desc:string
done: boolean
}
首先第一题是,我们需要实现类型函数 Partial1,返回的类型是 Todo 所有的属性都变成可选项。
type partTodo = Partial1<Todo>
// 和下面类型一致,鼠标移动到partTodo变量上也能看到
// type partTodo = {
// title?: string | undefined;
// desc?: string | undefined;
// done?: boolean | undefined;
// }
这一题的答案见下面的代码,使用 K in keyof T 遍历所有 T 的属性后,使用 ? 标记为可选属性。
type Partial1<T> = {
[K in keyof T]?:T[K]
}
TypeScript 中还有很多类似的函数,包括 Pick、Omit、Diff 等函数,你都可以自行实现一遍,更多工具类型函数你可以移步TypeScri