|
@@ -0,0 +1,34 @@
|
|
|
|
|
+(function () {
|
|
|
|
|
+ // 泛型:先用字符去指代未知类型 使用时候传入具体的类型
|
|
|
|
|
+ // function fn1(value:number):number {
|
|
|
|
|
+ // return value + 10;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // fn1(12);
|
|
|
|
|
+ function fn1<T>(value: T): T {
|
|
|
|
|
+ return value;
|
|
|
|
|
+ }
|
|
|
|
|
+ fn1(12);
|
|
|
|
|
+ fn1<string>('你好');
|
|
|
|
|
+
|
|
|
|
|
+ function fn2<T, K>(a: T, b: K): [T, K] {
|
|
|
|
|
+ return [a, b];
|
|
|
|
|
+ }
|
|
|
|
|
+ fn2(2, 3);
|
|
|
|
|
+
|
|
|
|
|
+ // 若函数中泛型继承接口
|
|
|
|
|
+ interface happy {
|
|
|
|
|
+ jump: string;
|
|
|
|
|
+ }
|
|
|
|
|
+ function fn3<T extends happy>(a: T): T {
|
|
|
|
|
+ return a;
|
|
|
|
|
+ }
|
|
|
|
|
+ fn3({ jump: '12' })
|
|
|
|
|
+ // 若类中泛型继承接口
|
|
|
|
|
+ class Ending<T extends happy> {
|
|
|
|
|
+ name: T;
|
|
|
|
|
+ constructor(name: T) {
|
|
|
|
|
+ this.name = name;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ let end = new Ending({ jump: '12' })
|
|
|
|
|
+})()
|