TypeScript数据类型(一)

心已赠人 2023-05-29 03:21 36阅读 0赞

TypeScript是强类型语言,这就意味着声明变量时,必须指定类型。这是与Javascript不同的地方。指定类型,既可以增强代码的健壮性(执行编译、语法检查)又可以提升代码的可读性(类型是最好的注释)。

TypeScript数据类型:
  • number:数值类型
  • string:字符串类型
  • boolean:布尔类型
  • 数组类型(Array)

    • number[]:数值数组
    • Array:泛型数组
  • [string, number]:元组类型(Tuple)
  • enum Color {Red, Green, Blue}:枚举类型
  • any:任意类型
  • void:空类型
  • undefined
  • null
  • never:永不存在值的类型
TypeScript数据类型基本使用
  1. // 1. 基本类型
  2. // 数字,二、八、十六进制都支持
  3. let decLiteral: number = 6;
  4. let hexLiteral: number = 0xf00d;
  5. // 字符串,单双引都行
  6. let fullName: string = "bob";
  7. let sentence: string = `Hello, my name is ${ fullName }.`;
  8. // 数组,第二种方式是使用数组泛型,Array<元素类型>:
  9. let list: number[] = [1, 2, 3];
  10. let lists: Array<number> = [1, 2, 3];
  11. let u: undefined = undefined;
  12. let n: null = null;
  13. // 2. 特殊类型
  14. // 元组 Tuple - 有组织的数组
  15. const messyArray = ["something", 2, true, undefined, null];
  16. const tuple: [number, string, string] = [24, "Tom" , "James"];
  17. // 枚举 enum - 可以为一组数值赋名
  18. // 默认情况从0开始为元素编号,也可手动为1开始
  19. enum Color { Red = 1, Green = 2, Blue = 4}
  20. let c: Color = Color.Green;
  21. let colorName: string = Color[2];
  22. console.log(colorName); // 输出"Green"因为上面代码里它的值是2
  23. // void - 无返回值
  24. function sayMyName(name: string): string {
  25. return name;
  26. }
  27. function consoleMyName(name: string): void {
  28. console.log(name);
  29. }
  30. // any - 任意类型
  31. let person: any = "前端劝退师";
  32. person = 25;
  33. person = true;
  34. // Never - 永远得不到
  35. // 3. 断言类型 - 可以用来手动指定一个值的类型,有两种写法,尖括号和 as
  36. let someValue: any = "this is a string";
  37. let strLength1: number = (<string>someValue).length;
  38. let strLength2: number = (someValue as string).length;
  39. function getLength(something: string | number): number {
  40. if ((<string>something).length) {
  41. return (<string>something).length;
  42. } else {
  43. return something.toString().length;
  44. }
  45. }
  46. // ? - 安全导航操作符: 为了解决导航时变量值为null时,页面运行时出错的问题。
  47. // ! - 非空断言操作符: 能确定变量值一定不为空时使用,不会防止出现 null 或 undefined。
  48. // 4. 泛型 - Generics
  49. // 泛型声明
  50. function gen_func1<T>(arg: T): T {
  51. return arg;
  52. }
  53. // 或者
  54. let gen_func2: <T>(arg: T) => T = function (arg) {
  55. return arg;
  56. };
  57. // 泛型调用
  58. gen_func1<string>("Hello world");
  59. gen_func2("Hello world");
  60. // 第二种调用方式可省略类型参数,因为编译器会根据传入参数来自动识别对应的类型。
  61. // 泛型接口
  62. interface Generics_interface<T> {
  63. (arg: T): T;
  64. }
  65. function func_demo<T>(arg: T): T {
  66. return arg;
  67. }
  68. let func1: Generics_interface<number> = func_demo;
  69. func1(123); // 正确类型的实际参数
  70. // func1("123"); // 错误类型的实际参数
  71. // 5. 自定义类型
  72. interface User1 {
  73. name: string;
  74. age: number;
  75. }
  76. type User2 = {
  77. name: string,
  78. age: number,
  79. };
  80. interface SetUser1 {
  81. (name: string, age: number): void;
  82. }
  83. type SetUser2 = (name: string, age: number) => void;
  84. // 相同点: 接口和自定义类型可以相互继承 - 参考链接 https://cloud.tencent.com/developer/article/1475206
  85. // 不同点:
  86. // 1. type 可以声明基本类型别名,联合类型,元组等类型
  87. // 2. type 语句中还可以使用 typeof获取实例的 类型进行赋值
  88. // 3. interface 能够声明合并
  89. // 4. interface 有可选属性和只读属性 ? - 可选属性标识符 readonly - 只读属性标识符
  90. interface Person {
  91. name: string;
  92. age?: number;
  93. gender?: number;
  94. readonly note: string;
  95. }

发表评论

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

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

相关阅读

    相关 TypeScript数据类型

    > TypeScript是强类型语言,这就意味着声明变量时,必须指定类型。这是与Javascript不同的地方。指定类型,既可以增强代码的健壮性(执行编译、语法检查)又可以提升