interface
基本概念
interface(接口) 是 TS 设计出来用于定义对象类型的,可以对对象的形状进行描述。
定义 interface 一般首字母大写,代码如下:
interface Person{
name:string,
age:number
}
定义了interface只能有这几项不能多也不能少
let p1 :Person = {
name:'小米',
age:20
}
可选属性
跟函数的可选参数是类似的,在属性上加个 ?
,这个属性就是可选的,比如下面的 age 属性
interface Person {
name: string
age?: number
}
const p1: Person = {
name: 'lin',
}
只读属性
如果希望某个属性不被改变,可以这么写:
interface P1{
readonly name?:number,
age:number
}
const pp1 :P1 = {
age :222,
name:333
}
//修改会报错
pp1.name = 444
interface 描述函数类型
interface 也可以用来描述函数类型,代码如下:
interface ISum {
(x:number,y:number):number
}
const add:ISum = (num1, num2) => {
return num1 + num2
}
自定义属性(可索引的类型)
上文中,属性必须和类型定义的时候完全一致,如果一个对象上有多个不确定的属性,怎么办?
可以这么写。
interface ooo{
[xx:string]:any
}
const p8 :ooo ={
name:'酷酷酷',
age:222
}
如果把属性名定义成number类型,那么就是数组了
interface aa{
[xx:number]:string
}
let a = ['1','2']