布尔值

let isDone: boolean = false;

数字

let decLiteral: number = 6;

字符串

let str: string = 'test';

数组

这里有两种定义方法

// 方法一
let arr: number[] = [0, 1, 2];

// 方法二
let arr: Array<number> = [0, 1, 2];

定制数组(官方翻译作:元组)

let x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error

注意

当访问一个越界的元素时,会使用联合类型进行处理(如上面例子里,越界的元素类型为 string|number)

x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型

console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString

x[6] = true; // Error, 布尔不是(string | number)类型

枚举

enum Color {Red, Green, Blue}
let c: Color = Color.Green;

默认情况下,枚举值从 0 开始,这里 Green 的值则为 1

也可以指定枚举值

enum Color {Red:1, Green, Blue}; // 从 1 开始,因此 Green=2,Blue=3

enum Color {Red:1, Green:2, Blue:4};

我们也可以根据枚举值得到定义的名字

enum Color {Red:1, Green, Blue}; // 从 1 开始,因此 Green=2,Blue=3

console.log(Color[2]); // Green

任意类型 any

定义为 any 的变量可以被赋值为任何类型的内容

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;

Never

永远都不应该出现的类型,当他出现时,则表示代码存在问题,编译会失败

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}

// 推断的返回值类型为never
function fail() {
    return error("Something failed");
}

// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}

类型断言

程序员有时候会比程序更知道当前的 any 是什么类型,这里可以直接告诉 typescript

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

// 另一种写法
let strLength: number = (someValue as string).length;

results matching ""

    No results matching ""