接口---Ts

TS的核心原则之一就是对值所具有的结构进行类型检查。TS里面接口的作用就是为这些类型命名 和 为你的代码 或 第三方代码定义契约。

在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement)。

TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述

 

类型别名

type person={

    name:string,

    age:number

}

let person1:person;

person1={

    name:"jack",

    age:20

}

对象接口

  1. 只关注值的外形, 只要传入的对象满足提到的条件,那么它就是被允许的。
  1. ​对象是无序的:类型检查器不会去检查属性的顺序,只要相应的属性存在且类型是对的就可以。

// interface中所有接口都必须实现并且满足其类型。

interface bird{

    name:string,

    age:number,

}

let b:bird;

b={

    name:"bird1",

    age:10

}

类型别名和对象接口的区别:

     类型别名只是换了名字;但是对象接口是在创建一个对象需要我们去实现它

    // 举例:

    interface box{

        color:string,

        width:number,

        height:number,

    }

    type box1=box;

    let a:box1

    // 此时的一不是box1类型的,box1只是它的一个别名;他还是box类型的

 

可选属性

接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。 可选属性在应用“option bags”模式时很常用,即给函数传入的参数对象中只有部分属性赋值了。

// 如果想要可选使用,就要用====>"?"

interface bird2{

    name:string,

    age:number,

    fly?:Boolean

}

let b2:bird2;

b2={

    name:"bird1",

    age:10,

    fly:true//可以用,也可以不使用

}

带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个?符号。好处:

  1. ​ 可以对可能存在的属性进行预定义;
  2. ​可以捕获引用了不存在的属性(往往是无意之中敲错的代码)时的错误;

 

只读属性

一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用 readonly来指定只读属性:

注:TypeScript具有ReadonlyArray<T>类型,它与Array<T>相似,只是把所有可变方法去掉了,因此可以确保数组创建后再也不能被修改。

readonly vs const:做为变量使用的话用 const,若做为属性则使用readonly。

// 只读属性

interface bird3{

    name:string,

    age:number,

    fly?:Boolean,

    readonly run:Boolean

}

let b3:bird3;

b3={

    name:"jack",

    age:15,

    fly:false,

    run:true //这个不报错是因为初始化

}

// b3.run=false;//报错.不能修改run的值,run是可读属性

 

// 想要修改只有重新指定一个对象

b3={

    name:"karen",

    age:1,

    fly:false,

    run:false //这个不报错是因为初始化

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值