初学 typescript (三)

33 阅读1分钟

泛型

泛型是一种在编程过程中使用的技术,它允许我们在定义函数、类或接口时使用参数化类型,以增加代码的灵活性和复用性。

在 typescript 中,可以使用泛型来使函数或类的参数或返回值具有更通用的类型。

  1. 使用泛型变量:
function identity<T>(arg: T): T {
    return arg;
}

let output = identity<number>(5)    // 指定泛型参数为number 5
console.log(output)                 // 输出 5

let output2 = identity<string>('hello')    // 指定泛型参数为 string 类型
console.log(output2)                       // 输出  hello
  1. 泛型类:
class Queue<T> {
    private data = [];
    push(item: T) {
        return this.data.push(item)
    }
    
    pop(): T {
        return this.data.shift()
    }
}

const queue = new Queue<number>();
queue.push(1)
console.log(queue.pop().toFixed())
  1. 泛型在接口中的应用
interface KeyPair<T, U> {
    key: T
    value: U
}

let kp1: KeyPair<number, string> = {key: 1, value: 'hello'};
let kp2: KeyPair<string, number> = {key: 'hello', value: 1}
let arr: number[] = [1, 3, 4]
let arr2: Array<number> = [1, 3, 4]

类型别名(type aliase)

let sum: (x: number, y: number) => number
const result = sum(1, 2);
type PlusType = (x: number, y: number) => number;
let sum2: PlusType;
const result2 = sum2(2, 3);

泛型约束

interface Lengthwise {
    length: number;
}

function loggingIdentity<T extends Lengthwise>(arg: T) {
    console.log(arg.length)
    return arr;
}