微山网站建设哪家好,建网站云空间,移动互联网开发技术是什么,我为什么不建议年轻人做销售文章目录一、typescript 的数据类型有哪些二、TypeScript 中枚举类型的理解三、TypeScript 中接口的理解四#xff0c; TypeScript 中类的理解五#xff0c;TypeScript 中泛型的理解#xff1f;六#xff0c;TypeScript 中高级类型的理解#xff1f;六#xff0c;TypeScr…
文章目录一、typescript 的数据类型有哪些二、TypeScript 中枚举类型的理解三、TypeScript 中接口的理解四 TypeScript 中类的理解五TypeScript 中泛型的理解六TypeScript 中高级类型的理解六TypeScript 中type与interface区别一、typescript 的数据类型有哪些
基本类型number、string、boolean、null、undefined、symbol、bigint 数组类型number[]、string[]、boolean[]、Array、Array、Array 元组类型[number, string, boolean] 枚举类型enum Color {Red, Green, Blue} Any类型any Void类型void Object类型object、Object Never类型never
二、TypeScript 中枚举类型的理解
枚举类型是 TypeScript 中的一种数据类型它允许我们定义一些具名的常量集合。使用枚举类型可以更加直观地表达代码含义提高代码可读性和可维护性。 在 TypeScript 中枚举类型通过enum关键字进行定义。例如
enum Direction {Up,Down,Left,Right
}
在这个例子中我们定义了一个名为 Direction 的枚举类型其中包含了四个常量成员Up、Down、Left 和 Right。默认情况下枚举成员的值会从0开始自动编号也可以手动指定值
三、TypeScript 中接口的理解
在 TypeScript 中接口Interface是一种抽象的定义用来描述对象的形状。它定义了一个对象应该具有的属性和方法。
接口的应用场景很广泛例如在定义函数参数时可以使用接口来规范参数的类型和结构在定义类时可以使用接口来规范类的结构在定义复杂的对象类型时可以使用接口来提高代码的可读性和可维护性。
// 先定义一个接口
interface IUser {name: string;age: number;
}
const getUserInfo (user: IUser): string {return name: ${user.name}, age: ${user.age};
};
// 正确的调用
getUserInfo({name: koala, age: 18});四 TypeScript 中类的理解
在 TypeScript 中类是一种定义对象属性和方法的结构化方式使用 class 关键字来定义。
类可以包含属性和方法通过实例化类可以创建对象对象可以访问类中定义的属性和方法。
与 JavaScript 不同的是TypeScript 中的类可以使用访问修饰符来控制属性和方法的访问级别如 public(默认值可以自由的访问类程序里定义的成员)、private(只能够在该类的内部进行访问) 和 protected(除了在该类的内部可以访问还可以在子类中仍然可以访问)。
类也可以继承其他类使用 extends 关键字来实现继承从而可以复用已有的类定义。
类还可以实现接口这种方式称为类实现接口使用 implements 关键字来实现接口。
总的来说类是面向对象编程的基本组成部分可以通过类来创建具有一定属性和行为的对象并且 TypeScript 中的类支持访问修饰符和继承等面向对象编程的概念使得代码更加规范和易于维护。
五TypeScript 中泛型的理解
在 TypeScript 中泛型可以让我们在定义函数、类、接口时不预先定义具体的类型而是在使用时再指定类型。这使得代码更加灵活且可复用性更高。
以下是一些泛型的基本概念
泛型函数使用泛型来定义函数的参数和返回值类型。
function identityT(arg: T): T {return arg;
}定义泛型的时候可以一次定义多个类型参数比如我们可以同时定义泛型 T 和 泛型 U
泛型接口使用泛型来定义接口的属性或方法。
interface ArrayT {length: number;push(...items: T[]): void;forEach(callbackfn: (value: T, index: number, array: T[]) void): void;
}泛型类使用泛型来定义类的属性和方法的类型。
class GenericNumberT {zeroValue: T;add: (x: T, y: T) T;
}
let myGenericNumber new GenericNumbernumber();
myGenericNumber.zeroValue 0;
myGenericNumber.add function(x, y) { return x y; };
六TypeScript 中高级类型的理解 交叉类型 使用符号表示可以将多个类型合并成一个类型。 联合类型 使用|符号表示可以表示一个值属于多种类型之一。 类型别名 使用 type 关键字定义一个类型别名方便在其他地方引用该类型。 类型索引 keyof 类似于 Object.keys 用于获取一个接口中 Key 的联合类型。 interface Button {type: stringtext: string}type ButtonKeys keyof Button// 等效于type ButtonKeys type | text类型约束映射类型 通过 in 关键字做类型的映射遍历已有接口的key或者是遍历联合类型
type ReadonlyT {readonly [P in keyof T]: T[P];
};interface Obj {a: stringb: string
}type ReadOnlyObj ReadonlyObj上述的结构可以分成这些步骤
keyof T通过类型索引 keyof 的得到联合类型 ‘a’ | ‘b’P in keyof T 等同于 p in ‘a’ | ‘b’相当于执行了一次 forEach 的逻辑遍历 ‘a’ | ‘b’
所以最终ReadOnlyObj的接口为下述
interface ReadOnlyObj {readonly a: string;readonly b: string;
}条件类型 使用extends关键字和三目运算符 ? 和 :可以根据类型关系推断出另一个类型。
六TypeScript 中type与interface区别
type 可以定义基本类型、联合类型、元组和其他自定义类型而 interface 只能定义对象类型。interface 支持继承而 type 不支持。当定义类型别名时type 可以使用联合类型、交叉类型和条件类型等高级类型而 interface 不支持。type 是对类型的重新定义而 interface 是对类型的声明。在某些情况下type 可以使用更通用的语法使得类型定义更加简洁易懂在定义类型时interface 可以使用 extends、implements 和 keyof 等关键字来增强类型的功能。