TS 之接口和泛型

最近项目需要使用ts,那么接口和泛型是一定需要了解的,今天他们两个的特性总结一波

接口

接口是定义对象一个对象的结构,定义一个对象中应该包含哪些属性和方法。

1.怎么定义?

使用关键字interface定义,看代码

interface cat {

  name:string

  age:number

}

const per:cat = {

  name: 'xiaoming',

  age: 18,

  // sex: '男', //报错,sex没有在cat中定义,接口未写的属性不可以定义

}

接口也可以同类型声明使用,这点和type是一样的,看代码

type typeCat= {

  name:string,

  age: number

}

const per:typeCat = { 自定义的属性和方法...}

不过type声明不可以重复,这点和let const是相同的 ,接口interface可以声明两次,结果是两个接口的属性方法的合并

interface cat {

  name:string

  age:number

}

interface cat {

  sex:string

}
//等价于
interface cat {

  name:string

  age:number

  sex:string

}
//如果第二个声明或者第n个声明中,有之前声明过的属性,则属性类型必须一致

泛型

定义:在定义函数或类时,遇到类型不明确的,可以使用泛型,泛型就是一个不确定的类型,调用时传入具体类型,看代码

function fn<T>(uncertain: T): T{ 

    return uncertain

}

比如说fn(10),那么传入的参数类型就是number,即T的类型被推断为number类型,还有一种写法

fn<string>("cat"),指定传入的参数是string类型

上面只是指定了一个泛型,你也可以指定多个泛型,看代码

function fn<T, U>(a:T, b:U):T{

  return a

}

调用方法是一样的,比如说fn(10,"cat")或者指定类型fn<number,string>(10,"cat")

泛型范围的限制

T extends interface表示泛型T 必须是interface的子类,看代码


interface strlength{

  length: number

}

function fn<T extends strlength>(a:T):number{

  return a.length

}

fn('cat')

 解释一下(从左到右),定义函数,指定其传入的参数必须含有其定义的属性,后边的number是函数输出的类型,当我们传入'cat',函数fn就会输出cat的字符串的长度。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值