2.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. // object (数组 对象 函数)
  2. // Array 数组
  3. // let a = [];
  4. let aa:number[] = [1,2,3];
  5. let bb:string[];
  6. bb = ['1','2','3'];
  7. let cc:Array<boolean>;
  8. cc = [true,false,true];
  9. // Tuple 元组:固定长度的数组
  10. let dd:[string,number,boolean];
  11. dd = ['str',123,true];
  12. // Object 对象
  13. let ee:object;
  14. ee = {};
  15. ee = function(){};
  16. ee = [];
  17. let ff:{
  18. name:string,
  19. age:number,
  20. sex:string,
  21. address?:string ,// 可选属性
  22. [propName:string]:any // 任意属性
  23. }
  24. ff = {
  25. name:'张三',
  26. age:18,
  27. sex: '男',
  28. address:'北京',
  29. eat:'苹果',
  30. book:'书籍'
  31. }
  32. // ff = {
  33. // name:'张三',
  34. // age:18,
  35. // sex: '男',
  36. // }
  37. // 函数类型
  38. function fn4():void {
  39. console.log('fn4');
  40. }
  41. fn4();
  42. function fn5(a:number,b:string):string {
  43. // console.log('fn5');
  44. return a + b;
  45. }
  46. fn5(3,'45');
  47. let fn6:(a:number,b:number)=>number;
  48. fn6 = function(x,y) {
  49. return x + y;
  50. }
  51. fn6(12,34);
  52. // 枚举 enum
  53. enum Sex1 {
  54. man,woman
  55. }
  56. let kk: {
  57. name:string,
  58. age:number,
  59. sex: Sex1
  60. }
  61. kk = {
  62. name:'李四',
  63. age:20,
  64. sex: Sex1.man
  65. }
  66. console.log(kk.sex === Sex1.man ? '男' : '女');
  67. // type 声明的内容 更侧重于 类型的重复使用 支持联合类型和交叉类型
  68. // 联合类型
  69. // 类型别名
  70. type myType = string | number | boolean;
  71. let ww:myType;
  72. ww = 'hello';
  73. ww = 123;
  74. ww = true;
  75. type myType2 = {
  76. name:string,
  77. age:number
  78. }
  79. let zz:myType2;
  80. zz = {
  81. name:'赵六',
  82. age:22
  83. }
  84. // & 交叉类型
  85. let oo: {
  86. name:string
  87. } & {
  88. age?:number
  89. }
  90. oo = {
  91. name:'王五',
  92. age:18
  93. }