1)string类型
function greeter(person: string) {
return "Hello, " + person;
}
//使用模版
let name: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ name }.
I'll be ${ age + 1 } years old next month.`;
2)boolean
let isDone: boolean = false;
3)number
//支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;
4)数组
//在元素类型后面接上 []
let list: number[] = [1, 2, 3];
//使用数组泛型,Array<元素类型>
let list: Array<number> = [1, 2, 3];
5)元组 Tuple
//数组x 第一位必须是字符串,第二位必须是number 后面元素,例如x[2] 也必须是字符串或者number
let x: [string, number];
6)枚举
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
//默认情况下,从0开始为元素编号。 也可以手动的指定成员的数值。
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];
alert(colorName); // 显示'Green'因为上面代码里它的值是2
7)Any
//任意类型
let notSure: any = 4;
//已知部分类型
let list: any[] = [1, true, "free"];
//数组里面的内容可赋值为任意类型
list[1] = 100;
8)Void
//表示没有任何类型,与any类型相反
//当一个函数没有返回值时,你通常会见到其返回值类型是 void
function warnUser(): void {
alert("This is my warning message");
}
//正常定义变量不会定义void类型,因为只能为它赋予undefined和null
let unusable: void = undefined;
9)Null 和 Undefined
//和 void相似,它们的本身的类型用处不是很大:
let u: undefined = undefined;
let n: null = null;
//当未指定了--strictNullChecks标记(默认不指定)null和undefined可以赋值给其他类型。
//因为默认情况下null和undefined是所有类型的子类型。
10)Never
never类型表示的是那些永不存在的值的类型。 例如,
never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;
变量也可能是 never类型,当它们被永不为真的类型保护所约束时。never类型是任何类型的子类型,也可以赋值给任何类型;
然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。下面是一些返回never类型的函数:
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
11)类型断言
告诉编译器 自己确定并手动设置该值得类型。
//类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
//另一个为as语法:
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
//两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;
//然而,当你在TypeScript里使用JSX时,只有as语法断言是被允许的。