首页 > 其他分享 >【TS】接口和接口继承

【TS】接口和接口继承

时间:2023-01-29 21:01:26浏览次数:48  
标签:string 继承 数据类型 TS 接口 person interface name

接口

接口也相当于语法规范,在使用ts编写的时候,需要注重的就是数据类型以及语法规范,恰好这里提供了一个接口,在进行传值的时候,传值的类型以及字段必须符合我们预期的类型规范才可以,下面是代码演示
语法:interface 接口名 { 参数名 : 数据类型 } ,例如: interface IPerson { username : string }

    // 接口:是一种能力,一种约束而已
    // 定义一个接口 此处定义规范
    interface IPerson{
        firstName : string // 姓氏
        lastName : string // 名字
    }

    // 输出姓名   在调用此方法的时候,需要传值,传的值必须符合IPerson内定义的规范
    function showName (person : IPerson) {
        return `${person.firstName},${person.lastName}`
    }
     
    const person = {
        firstName : '孙',
        lastName : '悟空'
    }
   // 此处调用showName 的时候 传入person 符合上面定义的接口规范
   console.log(showName(person));    // 打印 孙,悟空

如果传值少一项,或者传入的类型错误,则会编译报错,ts会给予提示,例如

const person = {
        firstName : '孙',
       // lastName : '悟空'
    }
  console.log(showName(person));
  // 此处传入的person 内部少一个字段,编译报错

在这里插入图片描述


接口继承

接口可以继承,子接口继承父接口,子接口就拥有父接口定义的数据类型约束,例如在此处定义了两个接口

// 接口1
interface ICart {
    name : string
}
// 接口2
interface IColor {
    color : string
}

这两个接口已经写好了,有时候需要对不同的数据进行约束,单一的接口可能不太合适,或者不太够用,那么就可以将多个接口组合,这就是继承。比如,这里定义了A接口 name ,B接口color,现在有一条数据:名字是东风,颜色为红色,价格999,此时可以将多个接口组合起来,B接口继承A接口,让B接口拥有A接口的数据类型约束,或者是定义一个新接口继承AB两个接口。

// 定义一个接口,继承 ICart 和 IColor
interface ICartInfo extends ICart,IColor{ 
    price : number    // 自身也可以定义数据类型
 }

此时 ICartInfo 的接口实际上约束的数据类型为:

interface ICartInfo extends ICart,IColor{ 
    name : string
    color : string
    price : number 
 }

使用接口

const cartInfo : ICartInfo = {
    name : '东风',
    color : "红色",
    price : 999
}
console.log(cartInfo);  // 输出 { name : '东风' , color : "红色" , price : 999 }

案例源码:https://gitee.com/wang_fan_w/ts-seminar

如果觉得这篇文章对你有帮助,欢迎点亮一下star

标签:string,继承,数据类型,TS,接口,person,interface,name
From: https://www.cnblogs.com/wang-fan-w/p/17073803.html

相关文章

  • 【TS】基础类型
    在ts中定义基础类型,语法:let变量名:数据类型=值//布尔类型----booleanletflag:boolean=trueflag=false在赋值的时候,不能赋值定义外的数据......
  • 【TS】数组和元组
    数组在ts中,定义数组类型语法:let变量名:数据类型[]=[值1,值2,值3]letarr1:number[]=[1,2,3,4]console.log(arr1);//输出[1,2,3,4]此外数字类型的定义还可......
  • 接口测试关注重点&满足的业务赋能要求
    =接口测试关注重点=检查接口返回的数据与预期的是否一致;检查接口的容错性,如传递的数据类型错误是否可以处理;接口的参数边界值,如传递的参数足够大或者为负数时,接口是否可......
  • 公司规定所有接口都用 post 请求,这正确么?
    目录背景get与post的区别所有接口都用post请求?背景最近在逛知乎的时候发现一个有趣的问题:公司规定所有接口都用post请求,这是为什么?看到这个问题的时候其实......
  • 炉石传说 酒馆战棋 积分保护机制Developer Insights: Hearthstone Battlegrounds Rati
    https://hearthstone.blizzard.com/en-us/news/23523064BlizzardEntertainment09/28/2020 Greetings!I’mTian,aLeadDataScientistontheHearthstoneteam......
  • CF103E Buying Sets
    这个世界上怎么有这么巧妙的建模啊。。首先,题目保证了任意\(k\)个子集并的大小\(\gek\)。这说明我们选的数字的数量永远大于等于集合数量如果不考虑数字数量等于集......
  • DestoryJavaVM停止HotSpotVM的步骤
    1、一直等待,直到只有一个非守护的线程执行,注意此时HotSpotVM仍然可用;2、调用java.lang.Shutdown.shutdown()方法,它会调用Java上的shutdown钩子方法,如果finalization-on-exi......
  • HotSpot VM启动时JNI_CreateJavaVM方法执行步骤
    1、确保只有一个线程调用这个方法并且确保只创建一个HotSpotVM实例。因为HotSpotVM创建的静态数据结构无法再次初始化,所以一旦初始化达到某个确定点后,进程空间里就只能有......
  • 【Demo】Python + Echarts 简易实现一个数据分布图
    文章目录​​前言​​​​需求​​​​最终实现​​​​源码​​​​1.统计各省市总数量​​​​excle源文件示例​​​​统计​​​​2.Echarts的使用​​​​所需文件​​......
  • 关于pacemaker中资源启动的位置约束Location Constraints
    默认情况,对于业务应用的资源启动在那里,可能是随机的、有时启动在app01上,也可能启动在app02了我们也可以通过手动配置分数的方式,将某个节点的分数配置到极高,无穷大,这样,资......