avatar
童琦杰
Feb 18, 2017Technology

Typescript - 基本类型

与Javascript语言一样,TypeScript也支持几种基本的数据类型,如布尔类型、数值类型、字符串类型。除了以上几种基本类型,TypeScript同时也提供几种独特的数据类型。

布尔类型

布尔类型只支持两种值:true/false

typescript
let done: boolean = false;

数值类型

数值类型变量允许使用十六进制、十进制、八进制、二进制字面量赋值。

typescript
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

字符串类型

TypeScript中字符串值允许使用双引号"或单引号'标记。

typescript
let color: string = "blue";
color = 'red';

同时,TypeScript支持模板字符串(template strings),允许跨越多行定义字符串值,并且允许在字符串内嵌入表达式,模板字符串使用反引号```标记。

typescript
let fullName: string = `Bob Bobbington`;
let age: number = 37;
let sentence: string = `Hello, my name is ${ fullName }. I'll be ${ age + 1 } years old next month.`

数组类型

TypeScript中的数组为强类型数组,也就是说数组元素的类型必须与定义数组时指定的类型一致。

第一种方法:

typescript
let list: number[] = [1, 2, 3];

第二种方法:

typescript
let list: Array<number> = [1, 2, 3];

元祖类型

元祖类型用于定义元素数量一定的数组,但是元素类型不需要一致。

typescript
// Declare a tuple type
let x: [string, number];
// Initialize it
x = ["hello", 10]; // OK

枚举类型

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

Any类型

作为动态语言,当无法确定变量的类型时,Any类型是一个很好的选择,定义为Any类型的变量在编译时并不会进行类型检查。

typescript
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

Void类型

当一个函数不返回任何值时,可以指定该函数返回值为Void类型。

typescript
function warnUser(): void {
    alert("This is my warning message");
}

如果将一个变量定义为Void类型,那么该变量只能赋值为undefinednull

typescript
let unusable: void = undefined;

Undefined类型、Null类型

Undefined类型变量只能赋值为undefined

Null类型变量只能赋值为null

typescript
// Not much else we can assign to these variables!
let u: undefined = undefined;
let n: null = null;

理论上,undefinednull值允许赋值为任何类型的变量,但是不建议这么做。

Never类型

当一个函数始终抛出异常或始终不会返回时,可以指定该函数返回类型为Never类型。

typescript
// Function returning never must have unreachable end point
function error(message: string): never {
    throw new Error(message);
}

// Inferred return type is never
function fail() {
    return error("Something failed");
}

// Function returning never must have unreachable end point
function infiniteLoop(): never {
    while (true) {
    }
}
© 2015-2022 tongqijie.com 版权所有沪ICP备17000682号