雄县做网站的,网站开发费用报价表百度,网页版whatsapp,网站后台网址忘记了 php在 TypeScript#xff08;简称 TS#xff09;中#xff0c;泛型#xff08;Generics#xff09;是一种允许你为组件#xff08;如类、接口和函数#xff09;定义灵活、可重用的类型的方式。泛型可以看作是一种类型参数化#xff0c;允许你在声明时定义一个或多个类型占…在 TypeScript简称 TS中泛型Generics是一种允许你为组件如类、接口和函数定义灵活、可重用的类型的方式。泛型可以看作是一种类型参数化允许你在声明时定义一个或多个类型占位符并在使用组件时提供具体的类型。
以下是泛型在 TypeScript 中的一些主要应用
1泛型函数
泛型函数可以在函数名后面使用尖括号 来定义类型变量。
function identityT(arg: T): T { return arg;
} let output identitystring(myString); // 输出 myString
let numOutput identitynumber(123); // 输出 123
注意在 TypeScript 中如果你能提供足够的类型信息编译器通常会推断出类型参数因此你可以省略类型参数
let output identity(myString); // 输出 myString编译器推断出 T 是 string2泛型类
泛型类允许你在类声明中定义类型变量。
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; };但通常对于类中的方法我们会使用接口和类型别名来实现泛型方法而不是直接在类上定义泛型。 3泛型接口
泛型接口允许你在接口中定义类型变量。
interface GenericIdentityFnT { (arg: T): T;
} function identityT(arg: T): T { return arg;
} let myIdentity: GenericIdentityFnnumber identity;4泛型约束
在定义泛型时你可能会想对类型参数进行一些约束。例如你可能希望泛型类型参数是一个具有 .length 属性的类型。这可以通过 extends 关键字来实现
interface Lengthwise { length: number;
} function loggingIdentityT extends Lengthwise(arg: T): T { console.log(arg.length); // 现在我们可以访问 arg.length 了 return arg;
}
5泛型数组
TypeScript 提供了内置的泛型如 ArrayT。
let list: Arraynumber [1, 2, 3];6泛型元组
在 TypeScript 4.0 及更高版本中你可以使用泛型来创建元组
type PairT, U [T, U];
let pair: Pairstring, number [hello, 10]; // 正确7泛型映射类型
你可以使用泛型来创建映射类型这些类型将对象中的每个属性从一种类型转换为另一种类型。例如PartialT 和 ReadonlyT 是 TypeScript 标准库中的映射类型。
这只是 TypeScript 泛型的一个简要介绍。泛型为 TypeScript 提供了强大的类型系统和代码重用能力。