typescript学习-基本类型

基础类型

Boolean

1
let isDone: boolean = fasle

Number

浮点数类型是number,大整数的类型是bigint

1
2
3
let decLiteral: number = 6 // 十进制
let hexLiteral:number = 0xf00d // 16进制
let bigLiteral: bigint = 100n // 大整数

String

1
let name: string = 'xnnnnn'

Array

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

Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。比如,你可以定义一对值分别为stringnumber类型的元组。

1
2
let x: [string, number]
x = ['hello', 10]

Enum

enum类型是对JavaScript标准数据类型的一个补充。

1
2
3
4
5
enum Color { Red, Green, Blue }
let c: Color = Color.Green
// 或者 赋予初始值
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;

Unknow

用来描述我们还不知道类型的变量。这些值可以来自动态内容。编程阶段

1
2
3
4
5
let notSure: unknown = 4;
notSure = "maybe a string instead";

// OK, definitely a boolean
notSure = false;

Any

有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用any类型来标记这些变量。 非编程阶段

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

Void

表示没有任何类型。当一个函数没有返回值时,通常会见到其返回值类型是void

1
2
3
4
5
6
function warnUser(): void {
console.log("This is my warning message");
}
let unusable: void = undefined;
let unusable: void = null;
//只能为它赋予null(只在--strictNullChecks未指定时)和undefined

Null和Undefined

默认情况下nullundefined是所有类型的子类型。 就是说你可以把nullundefined赋值给number类型的变量。

Never

never类型表示的是那些永不存在的值的类型。 例如,never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是never类型,当它们被永不为真的类型保护所约束时。

never类型是任何类型的子类型,也可以赋值给任何类型;

没有类型是never的子类型或可以赋值给never类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}

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

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

Object

object表示非原始类型。

numberstringbooleanbigintsymbolnullundefined之外的类型。

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

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

create(42); // Error

断言类型

有时候你会遇到这样的情况,你会比TypeScript更了解某个值的详细信息。 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型。

语法一:

1
2
let someValue: any = 'this is a string'
let strLength: number = (<string>someValue).length

语法二:

1
2
let someValue: any = 'this is string'
let strLength: number = (someValue as string).length

TypeScript里使用JSX时,只有as语法断言是被允许的。

感谢您的阅读。 🙏