Notes
TypeScript
TypeScript 基础类型

基础类型

  • 布尔值(Boolean)
  • 数字(Number)
  • 字符串(String)
  • 数组(Array)
  • 长整型(BigInt)
  • Symbol
  • Null
  • Undefined

布尔值(Boolean)

let isDone: boolean = false;

数字(Number)

ES6 提供了二进制和八进制数值的新的写法,分别用前缀 0b(或 0B)和 0o(或 0O)表示。

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

字符串(String)

let name: string = 'bob';
name = 'smith';

另外还可以使用模板字符串,它可以定义多行文本和内嵌表达式。这种字符串是被反引号包围(`),并且以 ${ expr } 这种形式嵌入表达式。

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.`;

数组(Array)

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

长整型(BigInt)

const max: bigint = 9007199254740991n;

Symbol

let sym1 = Symbol();
let sym2 = Symbol('key');

Null

let n: null = null;

Undefined

let u: undefined = undefined;

Any

在 TypeScript 中,任何类型都可以赋值给 any 类型,而 any 类型也可以赋值给任何类型。

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

联合类型

联合类型(Union Types)表示取值可以为多种类型中的一种。

let myFavoriteNumber: string | number = 'seven';
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

但是,访问联合类型的属性或方法时,只能访问此联合类型的所有类型里共有的属性或方法,不能访问其他类型的属性或方法。

数组

let fibonacci: number[] = [1, 1, 2, 3, 5];

或者使用数组泛型,泛型将在后面介绍。

let fibonacci: Array<number> = [1, 1, 2, 3, 5];

类数组:

function sum() {
  let args: {
    [index: number]: number;
    length: number;
    callee: Function;
  } = arguments;
}

类数组不是数组类型,比如 arguments。常见的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等,类数组不具备数组的一些方法,比如 push,pop 等,所以在 TypeScript 中,类数组只能用接口表示。

元组(Tuple)

元组(Tuple)合并了不同类型的对象,比如一个数组合并了多种类型的对象。

let xcatliu: [string, number] = ['Xcat Liu', 25];