8.泛型.ts 1.1 KB

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