本文主要是介绍2021.12.13 每天进步一点点: ts变量类型、符号、关键字的整理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
ts变量类型、符号、关键字的整理
- TS数据类型
- 布尔值
- 数字型
- 字符串型
- 数组
- 数字型数组
- 元组
- 枚举型
- any类型
- void类型
- undefined类型
- null类型
- never类型
- object类型
- unknown类型
- Date类型
- interface类型
- 可索引接口类型
- 继承接口类型
- 函数类型
- 泛型T
- 交叉类型
- 联合类型
- TS符号
- 类型断言
- 可选属性
- TS关键字
- readonly只读
TS数据类型
布尔值
: boolean
数字型
: number
支持二进制,十进制,八进制,十六进制
字符串型
: string
引号可以是"",也可以是’’,或者是模板字符串``
数组
[]
数字型数组
: number[] 或 : Array<number>
元组
包含的元素可以有不同类型的数组
: [string, number] // 表示第一个元素是字符串类型,第二个元素是数字型
枚举型
enum Color {Red, Green, Blue};
Color是变量类型。{}里面排序方式默认是0, 1, 2, …
有两种用法:
- 通过值,获取下标
: Color = Color.Red; // 0: Color = Color.Green; // 1
- 通过下标,获取值
: string = Color[0]; // 'Red': string = Color[1]; // 'Green'
也可以更改下标:
enum Color {Red = 1, Green = 4, Blue = 2};: Color = Color.Red; // 1: string = Color[4]; // Green
如果只设置了第一个元素的下标值, 后面的下标值是按照新的下标值往后增加的:
enum Color {Red = 1, Green, Blue};: Color = Color.Green; // 2: Color = Color.Blue; // 3
any类型
任意类型,未知类型,不同类型
: any[] = [1, 'hello', true];
void类型
不属于任何类型。
通常只用于函数没有返回值的时候, 给函数设置为void类型。
function fn(): void {console.log('这个函数没有返回值');
}
如果非要给变量设置为void类型,
则只能给变量赋值为undefined或null;
: void = undefined;: void = null;
undefined类型
一个undefined类型的变量,只能赋值为undefined;
: undefined = undefined;
null类型
一个null类型的变量,只能赋值为null;
: null = null;
never类型
表示该变量用不存在。
用在函数类型时,表示该函数永不存在正常执行的结束点。
官方文档给的用法:
function err(msg): never {throw new Error(msg);
}function noOk(): never {while (true) {// ...}
}
object类型
非原始类型,复杂类型,除了number,string,boolean,symbol,null或undefined之外的类型。
: object = {};
unknown类型
表示变量的类型是未知的。常替代any。
Date类型
currentTime: Date;
interface类型
因为接口本身也是用来定义变量结构及包含的类型的, 所以在此一并整理。
interface Inter {a: string;
}let b: Inter = {a: '我是字符型'}
interface定义一个名称Inter对象,Inter对象里必定有一个变量a是字符串类型。
定义b时,就必须按照Inter接口的形式来定义。
即b是一个对象,b里必定有一个字符串型变量a 。
可索引接口类型
interface Inter {[x: number]: string;
}let a: Inter = ['hello', 'ts'];
意思是,创建一个接口Inter,定义变量a为Inter结构,
用数字型x去索引a,得到的是一个字符串。即:
a[0] = 'hello';a[1] = 'ts';
继承接口类型
一个接口可以继承另一个接口的属性和构造,
也可以同时继承多个接口的属性和构造。
interface InterA {a: number;
}interface InterB {b: string;
}interface InterC extends InterA, InterB {c: string;
}let d = <InterC>{};d.a = 1;d.b = 'ts';d.c = 'hello';
函数类型
function fn(a: string, b: number): boolean {// ...
}
意思是函数fn有字符串型变量a和数字型b两个参数,有返回值,
返回值是boolean类型。
如果没有返回值,就把boolean换成void。即:
function fn(a: string, b: number): void {// ...
}
泛型T
当我们需要在一个函数中的返回值类型和输入参数值类型保持相同时,
可以用泛型。
function identity<T>(arg: T): T {return arg;
}
交叉类型
A & B
这时变量会同时拥有多个类型的成员
联合类型
string | number
TS符号
类型断言
你明确知道某个变量的类型,并通过断言符号,告诉机器该变量的确切类型。
两种写法:
- (<类型>变量) 注:tsx里禁用这种写法
let a: any = 'a是字符串类型';let b: number = (<string>a).length;
- (变量 as 类型)
let a: any = 'a是字符串类型';let b: number = (a as string).length;
可选属性
变量?: 类型
interface Inter {a: string;b?: num;
}let c: Inter = {a: 'hello'};
首先定义了一个接口Inter,
然后定义变量c的结构为Inter结构,
那么变量c中必定还有一个字符串变量a,
可以有数字型变量b,也可以没有。
TS关键字
readonly只读
定义为只读的属性,不可被改变
interface Inter {readonly a: num;
}let b: Inter = { a: 2 };
此时,不能再去给b变量里的a赋值为其他值。
即 b.a = 3; // 报错
let c: number[] = [1, 3, 5, 4];let d: ReadonlyArray<number> = c;
此时的d,就是一个只读数组,不能对d做增删改的任何操作。
这篇关于2021.12.13 每天进步一点点: ts变量类型、符号、关键字的整理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!