interface 与 type 有什么区别呢
/**
* 1.interface 和 type 区别
* 相同点:
* 1-1. 都可以描述一个对象或者函数
* 1-2. 都允许进行扩展
* 不同点:
* 2-1. type 声明基本类型别名、联合类型、元组等
* 2-2. typeof 获取实例对象
* 2-3. interface 可以合并
*/
/**
* 1. 有关后台接口的,愿意使用interface
* 2. 第三方的和开发的sdk 如 vue
* 3. 前端的库
* 4. 正常的开发任务中 type 直接使用会更方便直接
*/
例如 ,一个价格集合的接口
interface IPriceData {
id: number;
m: string;
}
type IPriceDataArray = IPriceData[]
function getPriceData() {
return new Promise<IPriceDataArray>((resolve, reject) => {
fetch('').then(function (response) {
return response.json()
}).then(function (myJson) {
const data: IPriceDataArray = []
resolve(data)
})
})
}
此时就能推断出对应的类型
不过接口一般而言,用于定义约束,如
// 定义接口
interface ClockConstructor {
// new 关键字说明实现这接口需要一个构造方法
new(hour: number, minute: number): ClockInterface
}
// 一个时钟接口
interface ClockInterface {
tick(): void
}
//定义一个时钟类,实现时钟接口
class DigitalClock implements ClockInterface {
tick(): void {
console.log('beep beep');
}
}
class AnalogClock implements ClockInterface {
tick(): void {
console.log('ding ding');
}
}
// 通过方法创建实体
function createClock(ctor: ClockConstructor, h: number, m: number) {
return new ctor(h, m)
}
const digital = createClock(DigitalClock, 12, 54)
const analog = createClock(AnalogClock, 7, 32)
// 调用
digital.tick() // beep beep
analog.tick() // ding ding