交叉类型
作者:
0说 | 来源:发表于
2024-02-14 10:50 被阅读0次// 交叉类型 &
interface OneType {
age: number
}
interface TwoType {
name: string
}
type ThreeType = OneType & TwoType
// 使用交叉类型后,新的类型 ThreeType就同时具备了OneType 和 TwoType 的所有属性类型
let obj: ThreeType = {
age: 15,
name: 'james'
}
console.log(obj)
// 交叉类型(&)和接口继承(extends)的对比:
// 相同点:都可以实现对象类型的组合。
// 不同点:两种方式实现类型组合时,对于同名属性之间,处理类型冲突的方式不同
interface Ttype {
fn(f: number): void
}
interface Ytype {
fn(f: string): void
}
interface Stype extends Ttype { //报错:接口“Stype”错误扩展接口“Ttype”。 属性“fn”的类型不兼容
fn(f: string): void
}
type Btype = Ttype & Ytype // 不会报错 这里的整合相同属性参数 Btype = { fn(f: string | number): void }
const aObj:Btype = {
fn(f) {
console.log(f)
}
}
aObj.fn('a')
aObj.fn(5)
aObj.fn(false) // 报错
本文标题:交叉类型
本文链接:https://www.haomeiwen.com/subject/jiwsadtx.html
网友评论