当前位置: 首页 > wzjs >正文

建站平台网上海seo有哪些公司

建站平台网,上海seo有哪些公司,专业做网站优化,linux网站建设论文泛型(Generics)是 TypeScript 的核心特性,它允许我们编写可复用、类型安全的代码,同时保持灵活性。以下是深度解析和实际应用指南: 一、泛型基础概念 本质:参数化类型,将类型作为变量传递&…

泛型(Generics)是 TypeScript 的核心特性,它允许我们编写可复用、类型安全的代码,同时保持灵活性。以下是深度解析和实际应用指南:


一、泛型基础概念

本质:参数化类型,将类型作为变量传递,像函数参数一样动态指定。

想象普通函数的参数是 值的变量,而泛型的参数是 类型的变量

  • T 就是一个类型变量,调用时才确定具体类型

  • 就像函数运行时才接收具体值一样,泛型在调用时接收具体类型

// 定义泛型函数
function identity<T>(arg: T): T {return arg;
}// 使用
const output1 = identity<string>("hello"); // 显式指定 T 为 string
const output2 = identity(42);              // 自动推断 T 为 number

二、泛型核心应用场景
1. 函数/方法泛型

典型场景:处理多种类型输入但逻辑相同的函数。

// 返回数组第一项
function firstElement<T>(arr: T[]): T | undefined {return arr[0];
}const str = firstElement(["a", "b"]); // T 推断为 string
const num = firstElement([1, 2]);     // T 推断为 number
2. 接口/类型泛型

典型场景:定义可复用的数据结构模板。

interface ApiResponse<T> {code: number;data: T;message: string;
}// 使用
type UserResponse = ApiResponse<{ name: string; age: number }>;
const res: UserResponse = {code: 200,data: { name: "Alice", age: 30 },message: "success"
};
3. 类泛型

典型场景:可定制化的类实现。

class Box<T> {private content: T;constructor(value: T) {this.content = value;}getValue(): T {return this.content;}
}const stringBox = new Box("hello");
const numberBox = new Box(42);
4. 约束泛型(Constraints)

典型场景:限制泛型参数必须满足某些条件。

interface HasLength {length: number;
}function logLength<T extends HasLength>(arg: T): void {console.log(arg.length);
}logLength("hello"); // OK,string 有 length 属性
logLength([1, 2]);  // OK,数组有 length
logLength(42);      // Error: number 没有 length
5. 默认泛型参数

典型场景:提供类型默认值。


interface Pagination<T = string> {items: T[];page: number;
}const p1: Pagination = { items: ["a", "b"], page: 1 }; // T 默认为 string
const p2: Pagination<number> = { items: [1, 2], page: 1 };

三、高级泛型技巧
1. 条件类型(Conditional Types)

典型场景:根据输入类型动态决定输出类型。


type IsString<T> = T extends string ? true : false;type A = IsString<"hello">; // true
type B = IsString<number>;  // false

四、实战应用案例
1. API 响应标准化

interface ApiResponse<T = any> {success: boolean;data: T;error?: string;
}async function fetchUser(): Promise<ApiResponse<{ id: number; name: string }>> {const res = await axios.get("/user");return res.data;
}
2

3. 工具类型实现
// 实现 Partial、Pick、Omit 等工具类型
type MyPartial<T> = { [P in keyof T]?: T[P] };
type MyPick<T, K extends keyof T> = { [P in K]: T[P] };
type MyOmit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

五、泛型最佳实践
  1. 避免过度泛型:只在真正需要灵活性的地方使用。

  2. 明确约束:用 extends 限制泛型范围,增强类型安全。

  3. 优先推断:尽量让 TypeScript 自动推断类型参数。

  4. 命名规范:泛型变量通常用 TUKV 等大写字母。


六、常见问题解答

Q1: 泛型会影响运行时性能吗?
A: 不会,泛型是编译期特性,会在编译后被擦除。

Q2: 泛型和 any 的区别?
A: 泛型保留类型信息,any 完全放弃类型检查。泛型是类型安全的。

Q3: 如何解决泛型推断失败?
A: 显式指定类型参数或调整函数签名。

http://www.dtcms.com/wzjs/79746.html

相关文章:

  • 网站建设与管理实务常德论坛网站
  • 江苏海宏建设工程有限公司网站国家市场监督管理总局
  • 亳州有做网站的吗网络营销运营策划
  • 外贸免费网站制作精准ip地址查询工具
  • 怎么自己做论坛网站吗2022拉新推广平台
  • 网站建设的原则和目标站长工具是做什么的
  • 网站建设综合实训设计报告加强服务保障满足群众急需ruu7
  • 梅州市工程建设交易中心网站百度网站收录提交入口全攻略
  • 茶文化网站制作网站如何宣传推广
  • 如何把网站做好内容营销平台有哪些
  • 天津建设网站哪家好佛山seo联系方式
  • 网站建设开发技术天津怎样搭建一个网站
  • wordpress顶部菜单设置德兴网站seo
  • 安徽建设住房建设厅网站商丘搜索引擎优化
  • 百度没有投放的网站点击四川餐饮培训学校排名
  • H5响应式网站示例线上宣传的方式
  • 用java软件做网站安徽seo推广
  • 网站运营公司哪家效果好今天上海重大新闻事件
  • 做网站销售那里找客户头条指数
  • 如何选择网站做站方向上海有实力的seo推广咨询
  • 做风水网站赚钱吗外链seo推广
  • 建设动态网站的工具seo工具不包括
  • 学网站开发有前途吗网站的优化seo
  • 永城市专业做网站百度上广告怎么搞上去的
  • 网站建设公司税率今日热搜榜排名
  • 企业网站建设计划表网页加速器
  • 360度全景网站的公司百度搜索浏览器
  • 做网站首页尺寸大小网络推广费用
  • 专门做pp他的网站seo推广方案
  • 网站建设与管理自考真题湖南uc浏览器关键词排名优化