Typescript
Typescript给Javascript带来了类型系统,带来了更智能的提示和丝滑的开发体验,Javascript中变量可以赋值任意类型的值,这在大型系统中会增加代码的维护难度,Typescript有点像三体人,每个变量的类型,每个函数的参数结构都对外清晰可见,是构建大型项目和框架的必备技术
Typescript是图灵完备的类型系统,类型可以写递归,初学者不要陷入复杂的类型体操,而是要专注功能的实现,我用代码演示几个使用场景, 这些代码搞明白就算入门了
// 1. 自己定义变量可以设置基本类型
let courseName:string = '玩转Vue3全家桶'
let price:number = 129
let isOnline:boolean = true
let courseSales:undefined
let me:[string,number] = ["大圣",18]
// 2. 对象类型
interface course {
name:string,
price:number[],
avatar?:string|boolean,
readonly address:string
}
//3 函数类型
type addType = (a:number,b:number)=>number
interface addType1{
(a:number,b:number):number
}
let add2:addType = function(x: number, y: number): number {
return x + y;
}
// 4. 宿主环境的类型TS提供了
let w:Window = window
let ele:HTMLElement = document.createElement('div')
ele.addEventListener('click',function(e:MouseEvent){
w.alert(1)
},false)
// 5 泛型 (难点)
// <T>就是<某种类型>的意思,就是定义了一个类型变量,通过extends控制类型
function test<某种类型>(args:某种类型):某种类型{
return args
}
type ExtendsType<T> = T extends boolean ? "重学前端" : "玩转Vue3"
function getProperty<T, K extends keyof T>(o: T, name: K): T[K] {
return o[name]
}
type ReturnType1<T> = T extends ()=>infer P ?P:never
// 6. 用到框架中的源码
import {ref, Ref} from 'vue'
const props = defineProps<{ title: string value?: number}>()
interface Todo{
title:string,
done:boolean
}
let todos:Ref<Todo[]> = ref([{title:'学习Vue',done:false}])
const App: React.FC<IProps> = (props) => {
const [count, setCount] = useState<number>(1)
return (
<div className="App">
<h1>hello world</h1>
<h2>{count}</h2>
</div>
);
}
// 7.网络接口的类型
// 限制前后端接口的Typescript类型,限制参数传递,前后端联调爽歪歪
import axios from 'axios'
function request<T extends keyof API>(url:T,obj:Api[T]){
return axios.post(url,obj)
}
interface Api{
'/course/buy':{
id:number
},
'/course/comment':{
id:number,
message:string
}
}
request('/course/buy',{id:1})
request('/course/comment',{id:1,message:'嘎嘎好看'})
request('/course/comment',{id:1}) //如果message必传 类型提醒缺少参数
request('/course/404',{id:1}) //接口不存在 类型报错
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
技术文档
免费文章和教程
- 掘金| TypeScript 高级用法open in new window
- 掘金| 一文读懂 TypeScript 泛型及应用open in new window
- 掘金| 一份不可多得的 TS 学习指南(1.8W字)open in new window
- 掘金| 「1.9W 字总结」一份通俗易懂的 TS 教程,入门 + 实战!open in new window
免费视频
@todo
B站录制 类型体操入门到实战
书籍推荐
付费课程
| Copyright © 京ICP备18000331号-1