本文介绍: 总的来说,类是面向对象编程基本组成部分可以通过类来创建具有一定属性行为对象,并且 TypeScript 中的类支持访问修饰符继承面向对象编程概念,使得代码更加规范和易于维护。在 TypeScript 中,泛型可以我们定义函数、类、接口时不预先定义具体的类型,而是在使用时再指定类型。与 JavaScript 不同的是,TypeScript 中的类可以使用访问修饰符控制属性方法的访问级别,如。类可以包含属性方法,通过实例化类可以创建对象对象可以访问类中定义属性方法

一、typescript数据类型哪些

基本类型:numberstringbooleannullundefinedsymbolbigint
数组类型: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 中,泛型可以让我们在定义函数、类、接口时不预先定义具体的类型,而是在使用时再指定类型。这使得代码更加灵活且可复用性更高。

以下是一些泛型的基本概念

  1. 泛型函数:使用泛型来定义函数的参数返回值类型。
function identity<T>(arg: T): T {
  return arg;
}

定义泛型的时候,可以一次定义多个类型参数比如我们可以同时定义泛型 T 和 泛型 U:

  1. 泛型接口:使用泛型来定义接口的属性或方法。
interface Array<T> {
  length: number;
  push(...items: T[]): void;
  forEach(callbackfn: (value: T, index: number, array: T[]) => void): void;
}
  1. 泛型类:使用泛型来定义类的属性和方法的类型。
class GenericNumber<T> {
  zeroValue: T;
  add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

六,TypeScript 中高级类型的理解?

  1. 交叉类型
    使用&amp;符号表示,可以将多个类型合并一个类型。

  2. 联合类型
    使用|符号表示,可以表示一个属于多种类型之一。

  3. 类型别名
    使用 type 关键字定义一个类型别名,方便在其他地方引用该类型。

  4. 类型索引
    keyof 类似于 Object.keys用于获取一个接口中 Key 的联合类型。

	interface Button {
	    type: string
	    text: string
	}
	
	type ButtonKeys = keyof Button
	// 等效于
	type ButtonKeys = "type" | "text"
  1. 类型约束
  2. 映射类型
    通过 in 关键字做类型的映射遍历已有接口的key或者遍历联合类型
type Readonly<T> = {
    readonly [P in keyof T]: T[P];
};

interface Obj {
  a: string
  b: string
}

type ReadOnlyObj = Readonly<Obj>

上述结构,可以分成这些步骤

  • 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;
}

六,TypeScript 中type与interface区别

原文地址:https://blog.csdn.net/weixin_46369590/article/details/130008710

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_49760.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注