在 TypeScript 中,泛型是一种可以让我们在编写代码的时候更加灵活的工具。通过使用泛型,我们可以编写更加通用的代码,而不需要为每种类型都编写一份代码。在接下来的内容中,我们将详细讨论 TypeScript 中的泛型,并编写一些示例代码。
什么是泛型?
泛型是一种在编写代码时不确定类型的机制。使用泛型可以将类型作为参数传递给函数或类,在编写代码时不需要指定具体的类型。在 TypeScript 中,我们可以使用尖括号 <>
来定义泛型。
泛型函数
泛型函数是一种可以处理不同类型的函数。我们可以通过在函数名后面使用尖括号来定义泛型类型,然后在参数类型和返回值类型中使用泛型。
function identity<T>(arg: T): T { return arg; } let output1 = identity<string>("hello"); let output2 = identity<number>(100);
上述代码中,我们定义了一个 identity
函数,它接收一个参数并返回该参数。我们使用尖括号来定义 T
作为泛型类型,然后在函数参数类型和返回值类型中使用 T
。
泛型类
泛型类是一种可以处理不同类型的类。我们可以通过在类名后面使用尖括号来定义泛型类型,然后在类的属性和方法中使用泛型。
-- -------------------- ---- ------- ----- -------- - ------- ----- - --- ----------- ------------- -- - ---------------------- - --------- - ------ ------------------- - - --- ----------- - --- ---------------- ----------------------- ----------------------- ----------------------------------- ----------------------------------- --- ----------- - --- ---------------- ----------------------------- ----------------------------- ----------------------------------- -----------------------------------
上述代码中,我们定义了一个 Queue
类,它包含一个 items
属性和两个方法。我们使用尖括号来定义 T
作为泛型类型,然后在类的属性和方法中使用 T
。
泛型约束
有时候,我们需要对泛型进行约束,限制它只能是某些类型,否则会产生编译错误。我们可以使用 extends
关键字来进行泛型约束。
-- -------------------- ---- ------- --------- ---------- - ------- ------- - -------- ----------------- ------- ---------------- --- - - ------------------------ ------ ---- - ------------------------- ------------------- -- ---- ----------------- ------- - ---
上述代码中,我们定义了一个 Lengthwise
接口,它包含一个 length
属性。然后我们定义了一个 loggingIdentity
函数,并使用 extends
关键字来进行泛型约束,要求传入参数必须实现了 Lengthwise
接口。
总结
泛型是一种非常强大的工具,在 TypeScript 中被广泛使用。通过使用泛型,我们可以编写更加通用的代码,减少代码的冗余和重复。希望本文对您在学习 TypeScript 中的泛型有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6450aaa2980a9b385b9a0e34