## 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 : [],//繼承的
}
```