巩固 TypeScript 基础 (一)

149 阅读1分钟

泛型

T是什么意思

  • T(Type)用来表示类型,在泛型中用来表示类型的范围

泛型是什么

  • 其实可以理解为声明一个类型,但是不赋最终的类型,类似于js中的var a;
  • 且泛型更多的是可以用来帮我们约束类型的范围
  • 在泛型中也可以通过extends继承
function studen <T,U> (age:T, name:U) : T {
    return age;
}
//把泛型当作参数,调用时传入泛型的类型值
studen<number,string>(16,'zhoukingzz')
//也可以不给泛型传值,通过实际参数让ts自己推导泛型值
studen(16,'zhoukingzz')
//通过继承获取泛型的类型约束
type nameType = string | number
interface student <T extends nameType>{
    name: T ;
    age: number;
}

type 和 interface 的区别

  • type:类型别名。我们可以用它来定义一个基本类型,也可以用它来定义联合类型。同时type支持泛型
  • interface:只能用来定义对象类型。在定义接口的时候,是可以同时声明对象上的属性和方法的。

相同点

  • typeinterface都可以用来描述对象或者函数。举个栗子:
type student = {
    age:number;
    name:string;
}
interface student {
    age:number;
    name:string;
}
type joinClass = (age:number, name:string) => void
interface joinClass {
    (age:number, name:string) : void
}

不同点

  1. typeinterface有各自不同的扩展方式
//type通过交叉运算符&扩展

type student = {
    age:number;
    name:string;
}
type moreInfo = student & {
    gender: boolean;
}
//inetrface 通过extends继承拓展
interface student {
    age:number;
    name:string;
}
interface moreInfo extends student {
    gender: boolean;
}
  1. 接受类型不同
  • type可以接收基本类型、函数类型、映射类型、联合类型和元组类型
  • interface接受对象类型
  1. 且同名接口会自动合并,而类型别名不会