一、介绍
TypeScript是由微软开发和维护的开源编程语言。它是JavaScript的超集,意味着任何有效的JavaScript代码也是有效的TypeScript代码。 TypeScript的主要特点之一是其类型系统,它允许开发人员向其代码添加静态类型。
JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。
原始数据类型包括:布尔值(boolean)、数值(number)、字符串(string)、空(null)、为定义(undefined) 以及 ES6 中的新类型 Symbol 和 ES10 中的新类型 BigInt。个人面试背题法(u2nsb)
本节主要介绍前五种原始数据类型在 TypeScript 中的应用。
一、环境准备
全局配置TS环境:
npm install -g typescript
使用
tsc index.ts
二、原始数据类型
1、布尔值
布尔值是最基础的数据类型,在 TS 中,使用 boolean 定义布尔值类型:
let isBoy: boolean = false;
上面代码编译通过。后面约定,未强调编译错误的代码片段,默认为编译通过。
注意,使用构造函数 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.
事实上 new Boolean() 返回的是一个 Boolean 对象:
let createdByNewBoolean: Boolean = new Boolean(1);
这样就不报错了。
直接调用 Boolean 同样可以返回一个 boolean 类型:
// 不报错
let createdByNewBoolean: Boolean = Boolean(1);
在 TypeScript 中,boolean 是 JavaScript 中的基本类型,而 Boolean 是 JavaScript 中的构造函数。其他基本类型(除了 null 和 undefined)一样。
2、数值
使用 number 定义数值类型:
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;
编译结果
var age = 100;
// 16进制
var hexAge = 0x64;
// ES6 中的二进制表示法
var BinaryAge = 100;
// ES6 中的八进制表示法
var OctalAge = 100;
// 不是数字
var notANumber = NaN;
// 无穷
var infinityNumber = Infinity;
3、字符串
使用 string 定义字符串类型:
let myName: string = 'cat';
let age: number = 20;
let str = `my name is ${myName},and I'll be ${age} years old`;
编译结果:
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 来定义这两个原始数据类型:
let u: undefined = undefined;
let n: null = null;
undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
// 这样不会报错
let num: number = undefined;
// 这样也不会报错
let num: number = undefined;
// 这样也不会报错
let num: number = undefined;