|
@@ -0,0 +1,39 @@
|
|
|
+(function() {
|
|
|
+ // 泛型:先用字符去指代未知类型 使用时 在传入 具体值
|
|
|
+ function fn1<A>(name:A):A {
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+ fn1('孙悟空');//所传入时 未直接指出类型 则ts默认解析传入类型
|
|
|
+ fn1<number>(1); //所传入时 直接指出类型 将类型写在<>内
|
|
|
+
|
|
|
+
|
|
|
+ // 多个参数
|
|
|
+ function fn2<T,W>(a:T,b:W):[T,W] {
|
|
|
+ return [a,b];
|
|
|
+ }
|
|
|
+ fn2('1',false);
|
|
|
+ fn2<boolean,string>(true,'hi')
|
|
|
+
|
|
|
+
|
|
|
+ // 接口
|
|
|
+ interface happy {
|
|
|
+ aa:string
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 函数中泛型继承接口 则传入的必须符合接口条件
|
|
|
+ function fn3<T extends happy>(x:T):T {
|
|
|
+ return x;
|
|
|
+ }
|
|
|
+
|
|
|
+ fn3({aa:'66'})
|
|
|
+
|
|
|
+ // 类中泛型继承接口 则传入的必须符合接口条件
|
|
|
+ class Hi<T extends happy> {
|
|
|
+ name:T;
|
|
|
+ constructor(name:T) {
|
|
|
+ this.name = name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let h = new Hi({aa:'66'})
|
|
|
+})()
|