Skip to content

一、介绍

TypeScript是由微软开发和维护的开源编程语言。它是JavaScript的超集,意味着任何有效的JavaScript代码也是有效的TypeScript代码。 TypeScript的主要特点之一是其类型系统,它允许开发人员向其代码添加静态类型。

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

原始数据类型包括:布尔值(boolean)、数值(number)、字符串(string)、空(null)、为定义(undefined) 以及 ES6 中的新类型 Symbol 和 ES10 中的新类型 BigInt。个人面试背题法(u2nsb)

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

一、环境准备

全局配置TS环境:

ts
npm install -g typescript

使用

ts
tsc index.ts

二、原始数据类型

1、布尔值

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

ts
let isBoy: boolean = false;

上面代码编译通过。后面约定,未强调编译错误的代码片段,默认为编译通过。

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

ts
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.

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

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

这样就不报错了。

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

ts
// 不报错
let createdByNewBoolean: Boolean = Boolean(1);

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

2、数值

使用 number 定义数值类型:

ts
let age:number = 100;
// 16进制
let hexAge: number = 0x64;
// ES6 中的二进制表示法
let BinaryAge: number = 0b1100100;
// ES6 中的八进制表示法
let OctalAge: number = 0o144;
// 不是数字
let notANumber: number = NaN;
// 无穷
let infinityNumber: number = Infinity;

编译结果

ts
var age = 100;
// 16进制
var hexAge = 0x64;
// ES6 中的二进制表示法
var BinaryAge = 100;
// ES6 中的八进制表示法
var OctalAge = 100;
// 不是数字
var notANumber = NaN;
// 无穷
var infinityNumber = Infinity;

3、字符串

使用 string 定义字符串类型:

ts
let myName: string = 'cat';
let age: number = 20;

let str = `my name is ${myName},and I'll be ${age} years old`;

编译结果:

ts
var myName = 'cat';
var age = 20;
var str = "my name is ".concat(myName, ",and I'll be ").concat(age, " years old");

4、Null 和 Undefined§

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

ts
let u: undefined = undefined;
let n: null = null;

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

ts
// 这样不会报错
let num: number = undefined;
// 这样也不会报错
let num: number = undefined;
// 这样也不会报错
let num: number = undefined;