TypeScript 基础数据类型

TypeScript 包含的基础数据类型如下:

any

声明为 any 类型的变量可以赋予任意类型的值(在程序执行过程中值类型空余改变)。

什么是任意值类型?

如果是一个普通类型,在赋值过程中改变类型是不被允许的:

let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
// index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.

但如果是 any 类型,则允许被赋值为任意类型。

let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;

任意值的属性和方法

在任意值上访问任何属性都是允许的:

let anyThing: any = 'hello';
console.log(anyThing.myName);
console.log(anyThing.myName.firstName);

也允许调用任何方法:

let anyThing: any = 'Tom';
anyThing.setName('Jerry');
anyThing.setName('Jerry').sayHello();
anyThing.myName.setFirstName('Cat');

可以认为,声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。

未声明类型的变量

变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型:

let something;
something = 'seven';
something = 7;
something.setName('Tom');

等价于

let something: any;
something = 'seven';
something = 7;
something.setName('Tom');

number

数字类型 number 双精度 64 位浮点值。

string

字符串类型 string 一个字符系列,使用单引号(')或双引号(")来表示字符串类型。反引号(`)来定义多行文本和内嵌表达式。

let name: string = "Runoob";
let years: number = 5;
let words: string = `您好,今年是 ${ name } 发布 ${ years + 1} 周年`; 

boolean

布尔类型 boolean 表示逻辑值:true 和 false。

array

数组类型

let arr: number[] = [1, 2];
// 或者使用数组泛型
let arr: Array<number> = [1, 2]; 

元组

元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let x: [string, number];
x = ['a', 1];    // 运行正常
x = [1, 'a'];    // 报错
console.log(x[0]);    // 输出 Runoob 

枚举

enum 枚举类型用于定义数值集合。

enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 输出 2 

void

void 用于标识方法返回值的类型,表示该方法没有返回值。

function hello(): void {
    alert("Hello Runoob");
} 

null

null 表示对象值缺失。

undefined

undefined 用于初始化变量为一个未定义的值

never

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。