TypeScript泛型开发常见错误解析

1. 过度使用泛型

错误示例

TypeScript 复制代码
// 不必要的泛型
function identity<T>(value: T): T {
  return value;
}

// 应该直接使用具体类型
function identity(value: string): string {
  return value;
}

正确做法

TypeScript 复制代码
// 只在需要灵活性时使用泛型
function identity<T>(value: T): T {
  return value; // 确实需要处理任意类型时
}

2. 泛型约束缺失

错误示例

TypeScript 复制代码
function getLength<T>(obj: T): number {
  return obj.length; // Error: Property 'length' does not exist on type 'T'
}

正确做法

TypeScript 复制代码
// 添加约束确保类型安全
interface HasLength {
  length: number;
}

function getLength<T extends HasLength>(obj: T): number {
  return obj.length;
}

3. 泛型推断问题

错误示例

TypeScript 复制代码
function merge<T, U>(obj1: T, obj2: U) {
  return { ...obj1, ...obj2 };
}

const result = merge({ name: "John" }, 25); // U 被推断为 number,但可能不是期望的

正确做法

TypeScript 复制代码
// 明确指定类型或添加约束
function merge<T extends object, U extends object>(obj1: T, obj2: U): T & U {
  return { ...obj1, ...obj2 };
}

// 或者明确指定类型
const result = merge<{ name: string }, { age: number }>(
  { name: "John" }, 
  { age: 25 }
);

4. 泛型默认值使用不当

错误示例

TypeScript 复制代码
class Container<T = any> { // 过度使用 any
  value: T;
  
  constructor(value: T) {
    this.value = value;
  }
}

正确做法

TypeScript 复制代码
// 使用更具体的默认类型
class Container<T = unknown> {
  value: T;
  
  constructor(value: T) {
    this.value = value;
  }
}

// 或者不提供默认值,强制使用者指定
class Container<T> {
  value: T;
  
  constructor(value: T) {
    this.value = value;
  }
}
相关推荐
郭涤生33 分钟前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS38 分钟前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣42 分钟前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100861 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
辰海Coding1 小时前
MiniSpring框架学习-完成的 IoC 容器
java·spring boot·学习·架构
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
小小编程路1 小时前
C++ 多线程与并发
java·jvm·c++
审判长烧鸡1 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
AI视觉网奇1 小时前
linux 检索库 判断库是否支持
java·linux·服务器
kkeeper~2 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言