- 为什么要类型兼容?因为实际工作中往往无法类型一致
- 下图情况,js developer 一般愿意走第二种方案,把config都传入 runTask ,反正参数冗余也不会报错
简单类型
普通对象的兼容
type Person = {
name: string
age: number
}
let user = {
name: 'Lance',
age: 18,
id: 1,
email: '[email protected]'
}
let p: Person
p = user
let user = {
name: 'Lance',
age: 18,
id: 1,
email: '[email protected]'
}
type User = typeof user
父子接口类型兼容
复杂的函数兼容
- 函数包括 参数 和 返回值
- TS 可以容忍参数变少,但不能参数变多
- 巧记:不能无中生有
let fn1 = (a: number) => {
console.log(a);
}
let fn2 = (b: number, s: string) => {
console.log(b, s);
}
fn2 = fn1 // OK
fn1 = fn2 // 报错