20分钟学会TypeScript 无废话速成 学不会你来评论区
TypeScript
1.类型约束
介绍:为了避免给字符串类型分配一个数值,则整个针对字符串相关的操作都是错误的
//1.类型推断,不建议使用 let str1 = "abc"; // 推断 str 为字符串类型 str1 = 10; //报错,不能将数值赋值给字符串类型 //2.类型注解,建议使用 let str2: string = "abc"; // 推断 str 为字符串类型 str2 = 10; //报错,不能将数值赋值给字符串类型 //3.类型断言 let numArr = [1, 2, 3]; const result = numArr.find((item) => item > 2) as number; result * 5; //ts比较严谨,若 result 为未定义的时候,则不能与 5 相乘,所以报错(在js中可以) //所以加上 as number 来约束 result 的类型
2.基础类型和联合类型
let v1: string = "abc"; let v2: number = 10; let v3: boolean = true; let nu: null = null; let un: undefined = undefined; //联合类型:v4 只能被分配 string 和 null 类型 let v4: string | null = null; let v5: 1 | 2 | 3 = 2;
3.数组
//数组的类型约束 let arr1: number[] = [1, 2, 3]; let arr2: Array<string> = ["a", "b", "c"];
4.元组
功能:指定数组的元素个数和每个元素的类型
let t1: [number, string, number?] = [1, "a", 2]; //'?'为可选项,该位置可不填,但是填了之后也只能是对应的类型
5.枚举
//定义
enum MyEnum {
A,
B,
C,
}
//访问
console.log(MyEnum.A);
console.log(MyEnum[0]);
//输出
0
"A"
6.函数
function MyFn1(a: number, b: string): string {
return a + b;
}
//a 和 b 规定了约束了参数的类型
//():string 约束了返回值的类型。可以为 void 表示函数无返回值
function MyFn2(a: boolean, b = 10, c?: string, ...rest: number[]): boolean {
return a;
}
//b 和 c 都为可选项
//b 不填则默认为 10,c 不填默认没有
//...rest 为剩余参数,且剩余值为一个数组结构,则可对其进行约束,为...rest: number[]
//注意,必选参数在左,可选参数在右,否则报错
//使用
const f: boolean = MyFn2(true, 20, "zx", 1, 2, 3, 4, 5);
console.log(f);
//输出
true
7.接口
//正常定义对象类型
const obj = {
name: "xiaomin",
age: 15,
};
//使用接口
interface obj {
name: string;
age: number;
};
//使用该接口来定义对象
const obj: obj = {
name: "a",
age: 10,
};
8.类型别名
//若很多参数都需要定义约束类型 let a: string | number = 10; let b: string | number = 20; let c: string | number = 30; //则使用类型别名 type MyType = string | number; let a: MyType = 10; let b: MyType = 20; let c: MyType = 30;
9.泛型
功能:若一个函数是比较通用的函数,如下面的函数,想让他处理一组字符串、布尔类型、数值类型,则可以使用泛型
//对函数定义泛型
function myFn<T>(a: T, b: T, ...r: T[]): T[] {
return [a, b, ...r];
}
//使用
//也可以 const arr = myFn(1, 2, 3, 12, 3); 因为 ts 支持类型推断
const arr: number[] = myFn<number>(1, 2, 3, 12, 3);
console.log(arr);
//输出
[1, 2, 3, 12, 3]

