TypeScript 中的类和泛型 | 青训营

57 阅读4分钟

前言

在计算机专业的学习中,掌握知识点是至关重要的。然而,仅仅听课和阅读教材可能并不足以真正理解和应用所学的内容。在这个信息爆炸的时代,我们需要更加主动和高效地学习,以提升自己在计算机领域的竞争力。而实践记录和笔记,作为学习的得力助手,能够帮助我们更好地理解知识点,加深记忆,并提供一个有组织的学习框架。我们可以不断总结和反思,发现自己的不足之处,并逐步提升自己的学习能力和解决问题的能力~让我们一起开启笔记/实践记录的学习之旅吧!

image.png

TypeScript 中的类和泛型:TypeScript中的泛型的使用方法和场景

今天我们来学习和记录一下前端性能优化与调试技巧的实战内容,这篇文章记录学习的是关于TypeScript 中的类和泛型的内容。

TypeScript 中的类和泛型

TypeScript 中的类和泛型是强大的语言特性,它们提供了更好的代码组织结构和类型安全。

  1. 类(Classes):

    • 类是面向对象编程的基本概念,它允许我们创建具有状态(属性)和行为(方法)的对象。
    • 可以使用 class 关键字定义一个类,并使用 constructor 方法来构造对象。
    • 类可以包含属性、方法和构造函数,还可以使用访问修饰符来控制成员的可访问性(publicprivateprotected)。
    • 可以使用 extends 关键字继承其他类的属性和方法。
    • 类可以实例化为对象,并通过对象调用其属性和方法。
  2. 泛型(Generics):

    • 泛型是指在定义函数、接口或类时使用类型变量,使它们能够适用于多种类型。
    • 可以使用尖括号 <T> 来表示泛型类型变量,其中 T 可以是任意合法的标识符。
    • 泛型增加了代码的灵活性和重用性,它可以与不同的数据类型一起使用,提供更好的类型检查和支持。
    • 泛型可以应用于函数、接口、类等,可以在定义时指定具体的类型或在调用/实例化时指定。
  3. 泛型函数(Generic Functions):

    • 泛型函数是一种使用泛型类型变量的函数,它可以适应多种数据类型。
    • 可以在函数名后使用尖括号 <T> 来表示泛型类型变量,然后在参数和返回值中使用该变量。
    • 泛型函数可以提供更好的类型推断,并允许我们在函数调用时指定具体的类型。
  4. 泛型接口(Generic Interfaces):

    • 泛型接口是一种使用泛型类型变量的接口,它可以适应多种数据类型。
    • 可以在接口名后使用尖括号 <T> 来表示泛型类型变量,然后在接口属性、方法中使用该变量。
    • 泛型接口允许我们定义灵活的接口类型,并在使用时指定具体的类型。
  5. 泛型类(Generic Classes):

    • 泛型类是一种使用泛型类型变量的类,它可以适应多种数据类型。
    • 可以在类名后使用尖括号 <T> 来表示泛型类型变量,然后在类的属性、方法中使用该变量。
    • 泛型类允许我们创建具有通用功能的类,并在实例化时指定具体的类型。

实践记录

以下是一些 TypeScript 类和泛型的使用实践记录

  1. 泛型函数示例:
      function identity < T > (arg: T): T {
        return arg;
    }

    let result = identity < string > ("Hello");
    console.log(result); // 输出:Hello

    let numberResult = identity < number > (42);
    console.log(numberResult); // 输出:42
  1. 泛型类示例:
   class Box<T> {
   private contents: T;
 
   constructor(value: T) {
     this.contents = value;
   }
 
   getValue(): T {
     return this.contents;
   }
 }
 
 let box = new Box<string>("TypeScript");
 console.log(box.getValue()); // 输出:TypeScript
 
 let numberBox = new Box<number>(42);
 console.log(numberBox.getValue()); // 输出:42
  1. 泛型约束示例:
  interface Lengthwise {
    length: number;
  }
  
  function printLength<T extends Lengthwise>(arg: T): void {
    console.log(arg.length);
  }
  
  let obj = { length: 5, value: "hello" };
  printLength(obj); // 输出:5
  1. 泛型函数类型示例:
    type MathOperation<T> = (a: T, b: T) => T;

    let add: MathOperation<number> = (a, b) => a + b;
    console.log(add(2, 3)); // 输出:5
    
    let concat: MathOperation<string> = (a, b) => a + b;
    console.log(concat("Hello", " TypeScript")); // 输出:Hello TypeScript

以上是一些 TypeScript 中泛型的使用实践记录和常见场景。通过使用泛型,我们可以提高代码的灵活性和安全性,并在需要处理不同类型的数据时提供更好的类型检查和支持。

文章仅为个人学习笔记,如有错误,欢迎指正。