@@ -26,8 +26,8 @@ function handleCallback<T>(count: T): T {
2626 return count;
2727}
2828
29- handleCallback< number> ( 1 ) ;
30- handleCallback< string> ( ' hello' ) ;
29+ handleCallback < number > 1 ;
30+ handleCallback < string > ' hello' ;
3131```
3232
3333## 函数中使用泛型
@@ -53,6 +53,7 @@ handleGeneric2<number>([1, 2, 3]);
5353```
5454
5555## 泛型约束
56+
5657``` javascript
5758
5859function handleAdd<T extends number, K extends number>(num1 : T , num2 : K ) {
@@ -61,67 +62,73 @@ function handleAdd<T extends number, K extends number>(num1: T, num2: K) {
6162
6263handleAdd (1 , 2 );
6364```
65+
6466## 属性约束
67+
6568``` javascript
66- const getVal = < T extends Object , K extends keyof T > (obj : T , key : K ) => {
69+ const getVal = < T extends object , K extends keyof T > (obj : T , key : K ) => {
6770 console .log (obj[key]);
6871}
6972
7073getVal ({ a: 1 }, ' a' )
7174```
7275
7376## 默认泛型
77+
7478``` javascript
7579interface IGen< T = string> {
76- [key: string]: T
80+ [key: string]: T ;
7781}
7882
7983type T1 = IGen;
80- type T2 = IGen< number>
81- type T3 = IGen< boolean>
84+ type T2 = IGen< number> ;
85+ type T3 = IGen< boolean> ;
8286
83- let str: T1 = { username: ' rain' }
84- let age: T2 = { age: 12 }
85- let bool: T3 = { flag: false }
87+ let str: T1 = { username: ' rain' };
88+ let age: T2 = { age: 12 };
89+ let bool: T3 = { flag: false };
8690```
8791
8892## 接口中使用泛型
93+
8994``` javascript
9095// 第一种 写在函数上的泛型表示调用函数时传入具体类型
9196interface IG1 {
92- < T , K > (count: T , num: K ): void
97+ < T , K > (count: T , num: K ): void ;
9398}
9499
95100const handleGeneric1: IG1 = < T , K > (count: T , num: K ): void => {
96101 console .log (count, num);
97- }
102+ };
98103
99104handleGeneric1 (1 , 1 );
100105
101106// 第二种 写在接口后面的泛型表示使用接口时传入具体类型
102107interface IG2 < T , K > {
103- (count: T , num: K ): void
108+ (count: T , num: K ): void ;
104109}
105110
106111const handleGeneric2: IG2 <number , number > = < T , K > (count: T , num: K ): void => {
107112 console .log (count, num);
108- }
113+ };
109114```
110115
111116## 类型别名中使用泛型
117+
112118``` javascript
113- type IG1 = < T , K > (count : T , num : K )=> void
119+ type IG1 = < T , K > (count : T , num : K ) => void ;
114120const handleGeneric1: IG1 = < T , K > (count: T , num: K ): void => {
115121 console .log (count, num);
116- }
122+ };
117123
118- type IG2 < T , K > = (count : T , num : K )=> void
124+ type IG2 < T , K > = (count : T , num : K ) => void ;
119125const handleGeneric2: IG2 <number , number > = < T , K > (count: T , num: K ): void => {
120126 console .log (count, num);
121- }
127+ };
122128```
123129
124130## 类中使用泛型
131+
125132``` javascript
126133class Person < T > {
127134 arr: T [] = [];
0 commit comments