## interface : 自定义数据类型约束结构
1.基本使用
```
//自定义一个接口,首字母I大写
interface Ilist {
a: number;
b: string;
c?: number;
}
//使用自定义接口,对数据约束
let obj2: Ilist = {
a: 1,
b: 'hello',
c: 66,
}
```
## 2.复杂结构
```
//定义一个对象数组
interface Ilist {
list: {
a: number,
b: string,
c?: number,
}[]
}
interface Idata {
code: number,
msg: string,
data: Ilist,//使用自定义结构
}
/模拟后端返回数据
let obj2: Idata = {
code: 200,
msg: '请求成功',
data: {
list: [
{ a: 1, b: '2' }
],
}
}
```
## 3.api解耦:vue项目中请求时约定类型
```
import request from '../utils/request'
//定义接口请求参数类型
interface Irequest {
pageSize : number;
num : number;
}
export function mostNew( data : Irequest ){
return request({
url:'/api/course/mostNew',
method:"post",
data
})
}
```
## 4.继承
```
//定义一个对象数组
interface Ilist {
list: {
a: number,
b: string,
c?: number,
}[]
}
interface Ichild {
children? : []
}
//Idata继承了Ichild,所以多了children属性
interface Idata extends Ichild{
code: number,
msg: string,
data: Ilist,//使用自定义结构
}
let obj2: Idata = {
code: 200,
msg: '请求成功',
data: {
list: [
{ a: 1, b: '2' }
],
},
children : [],//继承的
}
```