欢迎光临散文网 会员登陆 & 注册

20分钟学会TypeScript 无废话速成 学不会你来评论区

2023-08-08 15:08 作者:传承使徒  | 我要投稿

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] 


20分钟学会TypeScript 无废话速成 学不会你来评论区的评论 (共 条)

分享到微博请遵守国家法律