TS 泛型

一、泛型是什么?

概念:允许同一个函数接受不同类型参数的一种模板,可以理解为类型的变量,

优点:比联合类型更灵活,比any更严谨。

解决:控制函数输入输出一致

 

二、如何运用?

1.基本使用:常用T(type)来代表类型,如函数有多个类型的参数,可以用U、V来追加

function foo<T>(value: T): T{
  return value
}
const str: string = foo<string>('sofia')
console.log(str, 'str')

2.接口

可以使用泛型来控制函数的输入和输出

interface InOutNumber<T> {
  (arg: T): T;
}

let createNumber: InOutNumber<number>;
createNumber = function<T>(value: T):T {
  console.log(value) // 1
  return value
}
createNumber(1)

3.类

class GenericNumber<T> {
  zeroValue: T;
  add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = (x, y) => x + y;
console.log(myGenericNumber.add(1, 1)); // 2

 

posted @ 2023-05-18 20:44  Sofiaღ  阅读(47)  评论(0编辑  收藏  举报