TypeScript 类型:
-
布尔类型 (
boolean
):let isDone: boolean = false;
-
数字类型 (
number
):let decimal: number = 6; let hex: number = 0xf00d; let binary: number = 0b1010; let octal: number = 0o744;
-
字符串类型 (
string
):let color: string = "blue";
-
数组类型 (
Array
):let list: number[] = [1, 2, 3]; //使用数组泛型:Array<元素类型> let list: Array<number> = [1, 2, 3];
-
元组类型 (
[type1, type2, ...]
):let x: [string, number]; x = ["hello", 10]; //当访问一个越界的元素,会使用联合类型替代: x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
-
枚举类型 (
enum
):enum Color { Red, Green, Blue } let c: Color = Color.Green;
-
任意类型 (
any
):let notSure: any = 4; notSure = "maybe a string instead"; notSure = false;
-
空值类型 (
void
):function warnUser(): void { console.log("This is my warning message"); }
当一个函数没有返回值时,你通常会见到其返回值类型是 void.
声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null
- 空类型 (
null
和undefined
):let u: undefined = undefined; let n: null = null;
默认情况下null和undefined是所有类型的子类型。 就是说你可以把 null和undefined赋值给number类型的变量。
当你指定了–strictNullChecks标记,null和undefined只能赋值给void和它们各自。
- Never
// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
never类型表示的是那些永不存在的值的类型。 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
-
对象类型 (
object
):let obj: object = { prop: "value" };
-
联合类型 (
type1 | type2
):let value: string | number; value = "hello"; value = 123;
-
交叉类型 (
type1 & type2
):interface A { a: string; } interface B { b: string; } let ab: A & B = { a: "a", b: "b" };
-
字面量类型:
let direction: "north" | "south" | "east" | "west"; direction = "north";
-
类型别名 (
type
):type Name = string; type NameOrNumber = string | number;
-
接口 (
interface
):interface Person { name: string; age: number; } let john: Person = { name: "John", age: 25 };
-
函数类型 (
(param1: type, param2: type) => returnType
):let myFunc: (x: number, y: number) => number = function(x, y) { return x + y; };
-
类型断言 (
as
或<type>
):let someValue: any = "this is a string"; //类型断言两种形式 as语法 let strLength: number = (someValue as string).length; //尖括号 let strLength: number = (<string>someValue).length;