boolean
最基本的数据类型就是简单的true/false值,在JavaScript和TypeScript里叫做boolean(其它语言中也一样)。
let isDone: boolean = false;
console.log(isDone); // false
number
和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0x100; // 十六进制
let binaryLiteral: number = 0b100; // 二进制
let octalLiteral: number = 0o100; // 八进制
console.log(decLiteral, hexLiteral, binaryLiteral, octalLiteral); // 6 256 4 64
string
可以使用双引号( ")或单引号(')表示字符串;
还可以使用模版字符串,它可以定义多行文本和内嵌表达式。 这种字符串是被反引号包围( `),并且以${ expr }这种形式嵌入表达式
let name1: string = "susan";
let name2: string = 'smith';
let name3: string = = `Gene`
let age: number = 37;
let msg: string = `name: ${ name1 }, age :{ age }`
let msg1: string = "name: " + name1 + ",age:" + age
// msg与msg1的方式效果相同:
console.log(msg) // name:susan, age:37
Array
两种定义方式
第一种可以在元素类型后面接上[],表示由此类型元素组成的一个数组
第二种可以使用数组泛型,Array<元素类型>
// 第一种
let arr1: number[] = [1, 2, 3]
let arr2: string[] = ['1', '2', '3']
// 第二种
let arr3: Array<number> = [1, 2, 3]
let arr4: Array<string> = ['1', '2', '3']
元组Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为string和number类型的元组。
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error
//当访问一个已知索引的元素,会得到正确的类型:
console.log(x[0].substr(1)); // OK
console.log(x[1].substr(1)); // Error, 'number' does not have 'substr'
// 当访问一个越界的元素,会使用联合类型替代:
x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString
x[6] = true; // Error, 布尔不是(string | number)类型
object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
使用object类型,就可以更好的表示像Object.create这样的API。例如:
function create(o: object | null): void;
create({ prop: 0 }); // OK
create(null); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
Any
表示任意数据类型
enum Flag {
success,
error
};
let flag: any = true;// boolean
let num: any = 123;// number
let str: any = 'string';// string
let arr: any = [1, 2, 3];// Array
let tuple: any = [100, 'string'];// Tuple元组型
let e: any = Flag.success;// enum
let n: any = null;// null
let u: any = undefined;// undefined型
void
void类型像是与any类型相反, 表示没有任何类型
当一个函数没有返回值时,可使用返回值类型是 void
function warn(): void {
console.log("这是一个警告信息");
}
Null 和 Undefined
let u: undefined = undefined;
let n: null = null;
Never
表示的是那些永不存在的值的类型。
never类型是任何类型的子类型,也可以赋值给任何类型;
然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
enum枚举
// 枚举的定义
enum 枚举名 {
标识符[= 整型常数/字符串],
标识符[= 整型常数/字符串],
...
标识符[= 整型常数/字符串],
};
// 示例
enum Flag {
success,
error,
overtime
};
let s: Flag = Flag.overtime;
console.log(s);// 2
Symbols
symbol类型的值是通过Symbol构造函数创建的。