e 1 month ago
parent
commit
ac28ab9363
2 changed files with 66 additions and 0 deletions
  1. 27 0
      14.ts/4.面向对象/dist/8.泛型.js
  2. 39 0
      14.ts/4.面向对象/src/8.泛型.ts

+ 27 - 0
14.ts/4.面向对象/dist/8.泛型.js

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

+ 39 - 0
14.ts/4.面向对象/src/8.泛型.ts

@@ -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'})
+})()