原始数据类型包括:布尔值、数值、字符串、null
、undefined
以及 ES6 中的新类型 Symbol
和 ES10 中的新类型 [BigInt
]
布尔值
let isDone: boolean = false;
// 编译通过
let isVisible: boolean = Boolean(1);
// 编译通过
let isVisible: boolean = new Boolean(1);
// 编译失败
// 因为Javascript,通过new生成返回的是一个包装对象,至于普通的boolean值可以调用Boolean对象上的方法是因为通过原型链的原因
数值
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;
编译结果:
var decLiteral = 6;
var hexLiteral = 0xf00d;
// ES6 中的二进制表示法
var binaryLiteral = 10;
// ES6 中的八进制表示法
var octalLiteral = 484;
var notANumber = NaN;
var infinityNumber = Infinity;
其中 0b1010
和 0o744
是 ES6 中的二进制和八进制表示法,它们会被编译为十进制数字。
注意,16进制不会被转换,另NaN本身也是一个数字类型,Infinity也可以赋值给nubmer类型
字符串
可以使用string,也可以使用es6中的字符串模板写法。
空值
JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:
function alertName(): void {
alert('My name is Tom');
}
声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null(只在 --strictNullChecks 未指定时):
let unusable: void = undefined;
Null 和 Undefined
在 TypeScript 中,可以使用 null
和 undefined
来定义这两个原始数据类型:
let num: number = undefined;
// 这样也不会报错
let u: undefined;
let num: number = u;