TypeScript泛型

74 阅读1分钟

泛型;软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。

// 在函数中使用泛型
function identify<T>(arg: T): T {
  return arg;
}

// 可以明确指定类型
 console.log(identify<string>('string'));
  // 交给ts推断类型
console.log(identify(true));

// 在接口中使用泛型
 interface GenericIdentify<T> {
  (arg: T): T;
 }
 
 function identify<T>(arg: T): T {
   return arg;
 }

 let myIdentify: GenericIdentify<number | string> = identify;
// 可以明确指定类型
console.log(myIdentify('my-string'));

// // 交给ts推断类型
 console.log(myIdentify(30));

// 为泛型添加约束
function getLength<T extends number>(obj: T): any {
  return obj;
  // return obj.length;
}

 const obj = {
   name: '邓紫棋',
  age: 30,
 length: 10
 };
const obj = 25;
console.log(getLength(obj));