TypeScript常见高级类型全解析

2025/3/8
本文详细介绍了TypeScript提供的多种高级类型,包括联合类型、交叉类型、类型别名等,展示了它们的用法及作用,让TypeScript能处理更复杂类型场景。
TypeScript高级类型示例代码截图,联合类型、交叉类型等各类高级类型示例代码的可视化图片

TypeScript 提供了多种高级类型,这些类型可以帮助开发者更精确地定义和操作类型。以下是一些常见的高级类型:

  1. 联合类型(Union Types)
    允许一个变量可以是多种类型中的一种。例如:

    let value: string | number;
    value = "Hello"; // 合法
    value = 42;      // 合法
    
  2. 交叉类型(Intersection Types)
    将多个类型合并为一个类型。例如:

    type A = { a: number };
    type B = { b: string };
    type C = A & B;
    let obj: C = { a: 1, b: "hello" };
    
  3. 类型别名(Type Aliases)
    为类型创建一个新名字。例如:

    type StringOrNumber = string | number;
    let value: StringOrNumber;
    
  4. 索引类型(Index Types)
    通过索引访问类型的属性。例如:

    function getProperty<T, K extends keyof T>(obj: T, key: K) {
        return obj[key];
    }
    let obj = { a: 1, b: "hello" };
    let a = getProperty(obj, "a"); // a 的类型是 number
    
  5. 映射类型(Mapped Types)
    基于旧类型创建新类型。例如:

    type Readonly<T> = {
        readonly [P in keyof T]: T[P];
    };
    type Person = { name: string; age: number };
    type ReadonlyPerson = Readonly<Person>;
    
  6. 条件类型(Conditional Types)
    根据条件选择类型。例如:

    type NonNullable<T> = T extends null | undefined ? never : T;
    type T1 = NonNullable<string | number | null>; // T1 的类型是 string | number
    
  7. 类型推断(Type Inference)
    自动推断变量的类型。例如:

    let x = 3; // x 的类型被推断为 number
    
  8. 类型保护(Type Guards)
    在运行时检查类型。例如:

    function isString(test: any): test is string {
        return typeof test === "string";
    }
    if (isString(value)) {
        console.log(value.toUpperCase());
    }
    
  9. 类型断言(Type Assertions)
    手动指定变量的类型。例如:

    let someValue: any = "this is a string";
    let strLength: number = (someValue as string).length;
    
  10. 模板字面量类型(Template Literal Types)
    基于字符串字面量创建类型。例如:

    type World = "world";
    type Greeting = `hello ${World}`; // Greeting 的类型是 "hello world"
    

这些高级类型使得 TypeScript 在类型系统中更加灵活和强大,能够处理更复杂的类型场景。

标签:TypeScript
上次更新:

相关文章

TypeScript 映射类型常见问题与解决方案 | 提升代码维护性

本文探讨了在使用 TypeScript 时,映射类型的不当使用可能导致的问题,如代码难以维护、类型推断不准确或性能问题,并提供了相应的解决方案和最佳实践。

·编程语言

TypeScript 交叉类型与联合类型:区别与最佳实践

本文详细解释了 TypeScript 中交叉类型(Intersection Types)和联合类型(Union Types)的区别,提供了使用场景、类型守卫、避免过度使用交叉类型的建议,以及如何通过工具辅助解决混淆问题。

·编程语言

TypeScript 类继承中的常见类型问题及解决方案 | TypeScript 开发指南

本文详细探讨了在 TypeScript 中使用类继承时可能遇到的常见类型问题,包括类型兼容性、构造函数、方法重写、访问修饰符、泛型类继承、抽象类以及类型断言等问题,并提供了相应的解决方案和代码示例。

·编程语言

TypeScript 函数重载:常见问题与解决方案

本文探讨了 TypeScript 中函数重载的常见问题,包括签名与实际实现不匹配、重载签名过多、与泛型结合时的类型推断问题等,并提供了相应的解决方案。

·编程语言

TypeScript 类型与泛型约束冲突的解决方法 | 技术指南

本文详细介绍了在 TypeScript 中解决类型与泛型约束冲突的多种方法,包括明确泛型参数的类型约束、使用类型断言、条件类型、默认类型参数等,帮助开发者有效处理类型推断问题。

·编程语言

TypeScript 类型工具函数常见错误及解决方法 | 详细指南

本文详细介绍了在使用 TypeScript 类型工具函数时可能遇到的常见错误,包括类型推断错误、类型工具函数未定义、参数错误、返回类型错误等,并提供了相应的解决方法。

·编程语言

TypeScript 类型与运行时值不匹配的解决策略与最佳实践

本文详细介绍了在 TypeScript 开发中解决类型与运行时值不匹配问题的多种策略和最佳实践,包括类型断言、类型保护、类型推断、运行时类型检查、使用 `unknown` 类型、第三方库、避免 `any` 类型、`as const` 常量断言、`never` 类型处理以及 `readonly` 和 `ReadonlyArray` 的使用。

·编程语言

TypeScript 枚举类型常见问题及解决方案 | 最佳实践指南

本文详细介绍了在使用 TypeScript 枚举类型时可能遇到的常见问题,如枚举值类型不一致、重复、未定义等,并提供了相应的解决方案和最佳实践,帮助开发者编写更健壮和可维护的代码。

·编程语言

TypeScript 类型扩展与合并技巧 - 实用指南

本文详细介绍了在 TypeScript 中处理类型扩展与合并的多种方法,包括使用 `interface`、`type`、`extends`、`Partial`、`Pick`、`Omit`、`Record`、映射类型、条件类型、实用类型和 `namespace`。这些技巧有助于更好地管理和扩展复杂的类型系统。

·编程语言

TypeScript 类型断言的滥用问题及解决策略 | 提高代码类型安全性和可维护性

本文探讨了 TypeScript 中类型断言的滥用问题,并提供了多种解决策略,包括优先使用类型推断、类型保护、类型声明、避免使用 `any` 类型、使用 `unknown` 类型、重构代码、使用工具进行代码审查以及团队培训和代码审查。

·编程语言