0%

typescript(基础类型)


参考 TypeScript Handbook(中文版)

布尔值 boolean

1
let handle: boolean = false;

数值 number

二进制/八进制/十六进制/十进制

1
let count: number = 10;

字符串 string

可使用’/“/`

1
2
let name: string = 'laoWang';
let contact: string = `hi, my name is ${ name }`

数组 array

  • 元素类型后接 []
1
2
let list: number[] = [1, 2, 3];
let list: string[] = ['a', 'b'];
  • 数组泛型, Array<number|string|boolean>
1
let list: Array<boolean> = [false, true, false];

元组 tuple

简洁的说他就是能够存储多类型的数组但是得按照类型申明时后的给出

1
let arr: [string, number] = ['love', 70];

当访问越界元素,会使用联合类型代替。

枚举 enum

为一组数值赋予美好的名字

1
2
3
enum Animal {Cat, Dog, Fox}
let a: Animal = Animal.Cat;
let animalName: string = Animal[2];

任意值 any

对于第三方库,及不想被检查的时候使用

1
2
3
4
5
let num: any = '222';
num = 12;
num = false;

let list: any[] = [1, '22', false];

空值 void

1
2
3
4
5
6
function justlog(): void{
console.log('sb');
}

let uu: void = undefined;
let nn: void = null;

null, undefined

默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量。
然而,当你指定了 –strictNullChecks 标记,null 和 undefined 只能赋值给 void 和它们各自。 这能避免很多常见的问题。 也许在某处你想传入一个 string 或 null 或 undefined,你可以使用联合类型 string | null | undefined

never

never 表示那些永不存在的类型

是任何类型的子类

nerver 可以赋值给任何类型

任何类型包括 any 都不能赋值给 never

看例子大多用在 error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function error(message: string): never {
throw new Error(message);
}

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

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

对象Object

1
2
3
4
5
6
7
8
9
declare function create(o: object | null): void;

create({ prop: 0 }); // OK
create(null); // OK

create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error

类型断言

  • <>(jsx 不可使用)
  • as
1
2
3
4
5
let someValue: any = "this is a string";

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

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