Skip to content
静心静心
HOME
DoubtfulCases
github icon
  • Typescript基础

    • 原始数据类型
      • 布尔值
        • 数值
          • 字符串
            • 空值
              • Null 和 Undefined
                • 参考
                • 任意值
                  • 类型推论
                    • 联合类型
                      • 对象的类型——接口
                        • 数组的类型
                          • 函数的类型
                            • 类型断言
                              • 声明文件
                                • 内置对象
                                • Typescript进阶

                                  • 类型别名
                                    • 字符串字面量类型
                                      • 元组
                                        • 枚举
                                          • 类
                                            • 类与接口
                                              • 泛型
                                                • 声明合并
                                                  • 扩展阅读

                                                  原始数据类型

                                                  author iconYYtimer icon大约 3 分钟

                                                  此页内容
                                                  • 布尔值
                                                  • 数值
                                                  • 字符串
                                                  • 空值
                                                  • Null 和 Undefined
                                                  • 参考

                                                  # 原始数据类型

                                                  JavaScript 的类型分为两种:原始数据类型(Primitive data typesopen in new window)和对象类型(Object types)。

                                                  原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbolopen in new window 和 ES10 中的新类型 BigIntopen in new window。

                                                  本节主要介绍前五种原始数据类型在 TypeScript 中的应用。

                                                  # 布尔值

                                                  布尔值是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型:

                                                  let isDone: boolean = false;
                                                  
                                                  // 编译通过
                                                  // 后面约定,未强调编译错误的代码片段,默认为编译通过
                                                  
                                                  1
                                                  2
                                                  3
                                                  4

                                                  注意,使用构造函数 Boolean 创造的对象不是布尔值:

                                                  let createdByNewBoolean: boolean = new Boolean(1);
                                                  
                                                  // Type 'Boolean' is not assignable to type 'boolean'.
                                                  //   'boolean' is a primitive, but 'Boolean' is a wrapper object. Prefer using 'boolean' when possible.
                                                  
                                                  1
                                                  2
                                                  3
                                                  4

                                                  事实上 new Boolean() 返回的是一个 Boolean 对象:

                                                  let createdByNewBoolean: Boolean = new Boolean(1);
                                                  
                                                  1

                                                  直接调用 Boolean 也可以返回一个 boolean 类型:

                                                  let createdByBoolean: boolean = Boolean(1);
                                                  
                                                  1

                                                  在 TypeScript 中,boolean 是 JavaScript 中的基本类型,而 Boolean 是 JavaScript 中的构造函数。其他基本类型(除了 null 和 undefined)一样,不再赘述。

                                                  # 数值

                                                  使用 number 定义数值类型:

                                                  let decLiteral: number = 6;
                                                  let hexLiteral: number = 0xf00d;
                                                  // ES6 中的二进制表示法
                                                  let binaryLiteral: number = 0b1010;
                                                  // ES6 中的八进制表示法
                                                  let octalLiteral: number = 0o744;
                                                  let notANumber: number = NaN;
                                                  let infinityNumber: number = Infinity;
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8

                                                  编译结果:

                                                  var decLiteral = 6;
                                                  var hexLiteral = 0xf00d;
                                                  // ES6 中的二进制表示法
                                                  var binaryLiteral = 10;
                                                  // ES6 中的八进制表示法
                                                  var octalLiteral = 484;
                                                  var notANumber = NaN;
                                                  var infinityNumber = Infinity;
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6
                                                  7
                                                  8

                                                  其中 0b1010 和 0o744 是 ES6 中的二进制和八进制表示法open in new window,它们会被编译为十进制数字。

                                                  # 字符串

                                                  使用 string 定义字符串类型:

                                                  let myName: string = 'Tom';
                                                  let myAge: number = 25;
                                                  
                                                  // 模板字符串
                                                  let sentence: string = `Hello, my name is ${myName}.
                                                  I'll be ${myAge + 1} years old next month.`;
                                                  
                                                  1
                                                  2
                                                  3
                                                  4
                                                  5
                                                  6

                                                  编译结果:

                                                  var myName = 'Tom';
                                                  var myAge = 25;
                                                  // 模板字符串
                                                  var sentence = "Hello, my name is " + myName + ".\nI'll be " + (myAge + 1) + " years old next month.";
                                                  
                                                  1
                                                  2
                                                  3
                                                  4

                                                  其中 ` 用来定义 ES6 中的模板字符串open in new window,${expr} 用来在模板字符串中嵌入表达式。

                                                  # 空值

                                                  JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

                                                  function alertName(): void {
                                                      alert('My name is Tom');
                                                  }
                                                  
                                                  1
                                                  2
                                                  3

                                                  声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null(只在 --strictNullChecks 未指定时):

                                                  let unusable: void = undefined;
                                                  
                                                  1

                                                  # Null 和 Undefined

                                                  在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:

                                                  let u: undefined = undefined;
                                                  let n: null = null;
                                                  
                                                  1
                                                  2

                                                  与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:

                                                  // 这样不会报错
                                                  let num: number = undefined;
                                                  
                                                  1
                                                  2
                                                  // 这样也不会报错
                                                  let u: undefined;
                                                  let num: number = u;
                                                  
                                                  1
                                                  2
                                                  3

                                                  而 void 类型的变量不能赋值给 number 类型的变量:

                                                  let u: void;
                                                  let num: number = u;
                                                  
                                                  // Type 'void' is not assignable to type 'number'.
                                                  
                                                  1
                                                  2
                                                  3
                                                  4

                                                  # 参考

                                                  • Basic Typesopen in new window(中文版open in new window)
                                                  • Primitive data typesopen in new window
                                                  • [ES6 中的新类型 Symbol][]
                                                  • ES6 中的二进制和八进制表示法open in new window
                                                  • ES6 中的模板字符串open in new window
                                                  edit icon编辑此页open in new window
                                                  下一页
                                                  任意值
                                                  傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员。
                                                  Copyright © 2022 YY

                                                  该应用可以安装在您的 PC 或移动设备上。这将使该 Web 应用程序外观和行为与其他应用程序相同。它将在出现在应用程序列表中,并可以固定到主屏幕,开始菜单或任务栏。此 Web 应用程序还将能够与其他应用程序和您的操作系统安全地进行交互。

                                                  详情