教程地址


知识点

筛选器联合类型

1
2
3
4
5
6
7
8
9
10
11
12
13

type Circle{
kind: "circle";
radius: number;
}

type Square{
kind: "square";
slideLength: number;
}

type Shape = Circle | Square

1
2
3
4
5
6
7
8

// 使用分支语句收缩类型
if(s.kind === "circle"){
s type is Circle
}else if(s.kind === "square"){
s type is Square
}

小技巧

switch true

20260402134826.png

刷题

type-challenges

视频教程

学习方法:先用js函数写出来,再翻译成ts类型语法,遇到不会的就查,肯定可以写出来,因为ts的类型语法是图灵完备的,记得总结用到的知识点

pick

题目描述:

20260402154847.png

答案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
type MyPick<T, K extends keyof T> = {
[P in K]: T[P]
};


// 刷题思路,先写JS函数,再翻译成TS类型
// function myPick(todo, keys) {
// const obj = {};
// keys.forEach(key => {
// if (key in todo) {
// obj[key] = todo[key];
// }
// });
// return obj;
// }

/**
* 1. 返回对象
* 2. 遍历 keys mapped
* 4. 判断 key 是否存在与 todo.keys()
* 3. 取值 todo[key] indexed
*/

pick知识点