TypeScript中对象的类型限制——接口

对象的类型–接口(接口在ts中的作用之一)

TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对对象的形状进行描述。此篇主要学习对对象的形状进行描述.

  • 接口的定义及使用
interface Person{   //定义接口
    name:string,
    age:number
}

let tom:Person = {   //可以使用
    name:"tom",
    age:18
}   

let merry:Person = { //少一个属性,不行,报错
    name:"merry"
}

let lisi:Person = {  //多一个属性不行,报错
    name:"lisi", 
    age:18,
    height:180 
}

为对象指定类型时,必须与接口的’形状’一模一样,多一个少一个都会报错。

  • 定义接口的可选属性

有的时候我们不想要跟接口的属性一摸一样,就可以给接口用?号定义可选属性。

interface Person{
    name:string,
    age:number,
    height?:number   //可选属性
}

let Tom:Person = {
    name:"tom",
    age:18
}

let Marry:Person = {
    name:"Marry",
    age:18,
    height:180
}

console.log(Tom);
console.log(Marry);
  • 定义接口的任意属性
[propName: string]: any;   //任意属性的形式

小例子:

interface Person1{
   name:string,
   age?:number,
   [propName:string]:any
}

let timi:Person1 = {
    name:"timi",
    age:18,
    height:180,
    width:270
}

console.log(timi);

需要注意:

  1. 确定属性与可选属性必须是任意属性数据类型的子集,否则报错。
  2. 定义任意属性后,可添加的任意属性不止一个。
  • 定义只读属性。

需要注意:只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候,还有就是给对象赋值的时候,必须给只读属性赋值。

定义方式:属性前加readonly

interface Pers{
   readonly name:string,
   age?:number,
   [propName:string]:any
}

let dog:Pers={  //正常
 name:"dog"
}

let cat:Pers={   //报错
   age:18
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章