8.泛型.ts 1021 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. (function() {
  2. // function fn1(name:string):string {
  3. // return name;
  4. // }
  5. // function fn2(name:any):any {
  6. // return name;
  7. // }
  8. // 泛型:先用字符去指代未知类型 使用时传入具体类型
  9. function fn3<T>(name:T):T {
  10. return name;
  11. }
  12. fn3(12); //若传入时 未直接指出类型 则ts默认解析传入类型
  13. fn3<string>("12"); // 若传入是 直接指出类型 将类型写在<>内
  14. // 传入多个值
  15. function fn4<T,W>(a:T,b:W):[T,W] {
  16. return [a,b];
  17. }
  18. fn4<string,boolean>("11",true);
  19. // 接口
  20. interface happy {
  21. jump:string;
  22. }
  23. // 若函数中泛型继承接口 则传入的值必须符合接口条件
  24. function fn5<T extends happy>(a:T):T {
  25. return a;
  26. }
  27. fn5({jump:"0"});
  28. class Ending<T extends happy> {
  29. name:T;
  30. constructor(name:T) {
  31. this.name = name;
  32. }
  33. }
  34. let end = new Ending({jump:"唐僧啊"});
  35. console.log(end);
  36. })()