100天精通鸿蒙从入门到跳槽——第8天:TypeScript 知识储备:泛型


博主猫头虎的技术世界

🌟 欢迎来到猫头虎的博客 --- 探索技术的无限可能!

专栏链接:

🔗 精选专栏:

100天精通鸿蒙OS(基础篇)

  • [100天精通鸿蒙从入门到跳槽------第8天:TypeScript 知识储备:泛型](#100天精通鸿蒙从入门到跳槽——第8天:TypeScript 知识储备:泛型)

100天精通鸿蒙从入门到跳槽------第8天:TypeScript 知识储备:泛型

摘要💫

在 TypeScript 中,泛型是一种通用的编程概念,它允许开发者编写可以处理不同类型的代码。泛型允许开发者编写更加灵活和可重用的代码,从而提高代码的可维护性和可扩展性。

本文将介绍 TypeScript 中的泛型类型,包括泛型的定义、泛型参数、泛型约束和泛型类型保护 等。通过掌握这些知识,我们可以更好地使用 TypeScript 的功能,创建更加高效、安全和可靠的代码。

一、引言💥

随着 JavaScript 的广泛应用,开发人员越来越关注代码质量、可读性和可维护性。为了解决这些问题,TypeScript 应运而生。它为 JavaScript 添加了更多的类型信息,使得代码更加清晰、简洁和可维护。在 TypeScript 中,泛型是一种通用的编程概念,它允许开发者编写可以处理不同类型的代码。泛型允许开发者编写更加灵活和可重用的代码,从而提高代码的可维护性和可扩展性。

二、正文🎉

1. 泛型定义🧧

使用 <> 符号声明泛型。

typescript 复制代码
function identity<T>(arg: T): T {
  return arg;
}

const result = identity<string>("World");
console.log(result); // 输出 "World"

2. 泛型参数

泛型参数用 T、U 等字母表示,表示泛型类型。

typescript 复制代码
function identity<T>(arg: T): T {
  return arg;
}

const result = identity<string>("World");
console.log(result); // 输出 "World"

3. 泛型约束🪅

泛型参数可以添加类型约束,以便限制泛型类型。

typescript 复制代码
function identity<T extends string>(arg: T): T {
  return arg;
}

const result = identity<string>("World");
console.log(result); // 输出 "World"

const error = identity<number>("World"); // 编译错误

4. 泛型类型保护🧸

泛型类型保护允许在运行时检查泛型参数的类型。

typescript 复制代码
function identity<T>(arg: T): T {
  if (arg instanceof Array) {
    return arg.join(",");
  }
  return arg;
}

const result = identity<string>("World");
console.log(result); // 输出 "World"

const result2 = identity<string[]>("World,Hello");
console.log(result2); // 输出 "World,Hello"

5. 泛型与接口结合🛼

泛型可以与接口结合使用,以提供对象的结构定义。

typescript 复制代码
interface GenericIdentityFn<T> {
  (arg: T): T;
}

function identity<T>(arg: T): T {
  return arg;
}

const myIdentity: GenericIdentityFn<string> = identity;
const result = myIdentity("World");
console.log(result); // 输出 "World"

三、总结🎢

通过本文,我们了解了 TypeScript 中泛型类型的基本概念,包括泛型的定义、泛型参数、泛型约束和泛型类型保护等。掌握这些知识,我们可以更好地使用 TypeScript 的功能,创建更加高效、安全和可靠的代码。

四、参考资料🏛

TypeScript 官方文档:https://www.typescriptlang.org/docs/handbook/2/generics.html

👉 更多信息 :对《100天精通鸿蒙》专栏感兴趣吗?别忘了点击文末名片或者下方链接加入我们的学习群。我是猫头虎博主,期待与您的交流! 🦉💬
领域矩阵:

🌐 猫头虎技术领域矩阵 :

深入探索各技术领域,发现知识的交汇点。了解更多,请访问:

JS, TS,ArkTS 等前端技术
💡 联系与版权声明:

📩 联系方式:

  • 微信: Libin9iOak
  • 公众号: 猫头虎技术团队

⚠️ 版权声明 :

本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请联系作者猫头虎@阿珊和她的猫。
点击下方名片,加入猫头虎技术社群矩阵。与我们一起在《100天精通鸿蒙》的旅程中,探索HarmonyOS的奥秘,共同成长。


相关推荐
ZhengEnCi3 小时前
Hono 4 多库多模型服务的企业级 Monorepo 目录结构:npm workspaces 与 Turborepo 该怎么分层
typescript
贾伟康5 小时前
HarmonyOS API 26 Navigation 跨包路由:router_map、HSP 按需加载与失败回落
harmonyos·arkts·模块化·navigation·hsp
KevinChaos6 小时前
阳台小花园开发手记 04|HarmonyOS 7.0 互动卡片:倾斜手机时的卡片效果
华为·harmonyos
1-1=06 小时前
Vue 3 模板语
前端·javascript·vue.js
风卿6 小时前
看着AI写代码太孤独了,来欣赏星云吧:一个DSH 装饰插件
前端·javascript
牧艺6 小时前
弹层不用再手算坐标了:CSS Anchor Positioning 从原理到可上线
前端·javascript·css
愚坤7 小时前
前端真有意思,JS还能独立做项目?
前端·javascript·github
李纲明9 小时前
微信小程序 getSystemInfo 提示已废弃、屏幕高度算错胶囊还对不齐?getWindowInfo 和 getDeviceInfo 怎么接才稳
javascript·微信小程序·小程序·小程序开发·devdiy
xx z9 小时前
python 手机版下载(安卓 Python 3 运行环境安装说明)
编程·安卓·软件
FungLeo10 小时前
成为全栈·Vue 管理后台篇·用 fetch 建一层可控的请求内核
前端·javascript·vue.js·http·fetch·formdata·接口封装