TS基础1(类型定义、接口)-学习笔记

柔光的暖阳◎ 2022-10-19 08:05 100阅读 0赞

文章目录

    • TS基础1(类型定义、接口)-学习笔记
      • 什么是TS

TS基础1(类型定义、接口)-学习笔记

什么是TS

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. //ts用法
  2. var n:number = 10;
  3. let str:string = '10';
  4. let str2:string = 'abc';
  5. let str3:string = `hello ${ str2}`;
  6. let flag:boolean = true;
  7. let u:undefined = undefined;
  8. let nu:null = null;
  9. //类型定义后,不允许类型改变
  10. var a:string = '10';
  11. // a = 10; error
  12. //任意值(Any) 用来表示允许赋 值为任意类型
  13. var a2:any = '10';
  14. a2 = 10;
  15. a2 = true;
  16. //变量如果在声明的时候,未指定其类型,会被识别为任意值
  17. var a3;
  18. a3 = 'abc';
  19. a3 = 10;
  20. // 10, '10'
  21. //联合类型 可以为多种类型中的一种
  22. var a4:string | number;
  23. a4 = 10;
  24. a4 = '10';
  25. //注意!!!! 访问的是联合属性共有的属性中方法
  26. function getLength(str:string | number): number{
  27. return str.length
  28. };
  29. getLength(a4)
  30. //正确的写法
  31. // function getLength2(str:string | number[]): number{
  32. // return str.length
  33. // };
  34. // getLength2([1,2,3])
  35. //数组 有多种定义方式
  36. //最简单的方式 类型+方括号 来表示数组
  37. var arr:number[] = [1,2,3,9];
  38. var arr2:string[] = ['a','b','c'];
  39. var arr3:any[] = ['a',2,true,[1,2]];
  40. //对象的类型 —— 接口
  41. //接口(Interfaces)可以用于对「对象的形状(Shape)」进行描述。
  42. //规范
  43. //接口首字母大写
  44. interface Person {
  45. name: string;
  46. age: number;
  47. };
  48. //对象受到接口的约束
  49. var tom: Person = {
  50. name:'tom',
  51. age:20
  52. };
  53. //定义的变量比接口少了属性是否允许 ——不允许
  54. var tom2: Person = {
  55. name:'tom'
  56. };
  57. //定义的变量比接口多了属性是否允许 ——不允许
  58. var tom3: Person = {
  59. name:'tom',
  60. age:20,
  61. sex:'男'
  62. };
  63. //可选属性 希望接口中有可选属性
  64. interface Person2 {
  65. name: string;
  66. age?: number; //age属性是可选属性
  67. }
  68. var tom4: Person2 = {
  69. name:'tom'
  70. };
  71. var tom5: Person2 = {
  72. name:'tom',
  73. age:20
  74. };
  75. //可选属性只针对于当前设置的属性,仍然不能添加其它属性
  76. // var tom6: Person2 = {
  77. // name:'tom',
  78. // age:20,
  79. // sex:'男'
  80. // };
  81. //任意属性 接口中添加一个任意的属性
  82. interface Person3 {
  83. name: string; //
  84. age?: number; //age属性是可选属性
  85. [propName: string]: any; //任意属性
  86. }
  87. //注意:写入了任意属性[propName: string] 那么确定属性和可选属性必须是它的子属性
  88. var tom7: Person3 = {
  89. name:'tom',
  90. age:20,
  91. sex:'男',
  92. };
  93. //函数类型 输入和输出的约束
  94. //函数声明
  95. function f1(x: number,y: number): number{ //(x: number,y: number) 输入约束 : number 输出的约束
  96. return x+y
  97. }
  98. f1(1,1);
  99. //函数表达式
  100. var f2 = function(x: number,y: number): number{
  101. return x+y
  102. };
  103. //能否允许传多、少参数--不允许
  104. function f3(x: number,y: number): number{
  105. return x+y
  106. }
  107. //f3(1,1,5);
  108. //f3(1);
  109. //参数默认值
  110. function f4(x: number= 5,y: number): number{
  111. return x+y
  112. };
  113. //参数可选
  114. //注意!!! 可选参数必须接在必需参数后面
  115. //换句话说:可选 参数后面不允许再出现必需参数
  116. function f5(x: number= 5,y?: number): number{
  117. if(y){
  118. return x+y;
  119. }else {
  120. return x;
  121. }
  122. };
  123. f5(10);
  124. //f5(10,10); //OK

补充:

  1. //类型别名 type
  2. type n = number;
  3. function f(i:n): n{
  4. return i
  5. };
  6. let n2: n = 100;
  7. //联合类型别名
  8. type a = string | number[];
  9. var x1:a = [2];
  10. var x2:a = '111';
  11. //var x3:a = 222; //error

发表评论

表情:
评论列表 (有 0 条评论,100人围观)

还没有评论,来说两句吧...

相关阅读