ts---泛型

泛型:是一种编程语言特性,允许在定义函数、类、接口等时使用占位符来表示类型,而不是具体的类型。

我的理解:泛型就是广泛的类型,既然是广泛的类型,就是应用范围很广,可适用于多种形式,目的是为了提高代码的复用性。

优势:

代码重用: 可以编写与特定类型无关的通用代码,提高代码的复用性。
类型安全: 在编译时进行类型检查,避免在运行时出现类型错误。
抽象性: 允许编写更抽象和通用的代码,适应不同的数据类型和数据结构。

1、泛型的标识符:可使用任意标识符

在泛型中,通常使用一些约定俗成的标识符,比如常见的 T(表示 Type)、UV 等,但实际上你可以使用任何标识符。

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

2、泛型函数

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

4、泛型接口

// 基本语法
interface Pair<T, U> {
    first: T;
    second: U;
}

// 使用泛型接口
let pair: Pair<string, number> = { first: "hello", second: 42 };
console.log(pair); // 输出: { first: 'hello', second: 42 }

5、泛型类

// 基本语法
class Box<T> {
    private value: T;

    constructor(value: T) {
        this.value = value;
    }

    getValue(): T {
        return this.value;
    }
}

// 使用泛型类
let stringBox = new Box<string>("TypeScript");
console.log(stringBox.getValue()); // 输出: TypeScript

6、泛型与默认值

// 基本语法
function defaultValue<T = string>(arg: T): T {
    return arg;
}

// 使用带默认值的泛型函数
let result1 = defaultValue("hello"); // 推断为 string 类型
let result2 = defaultValue(42);      // 推断为 number 类型

打完收工!

posted @ 2024-08-31 17:32  帅到要去报警  阅读(33)  评论(0编辑  收藏  举报