// 交叉类型 &
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) // 报错
交叉类型
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一、混入(mixins) mixins 混入可以理解为扩展,把本来不属于自己的东西硬生生的给弄到自己身上,在 Ty...
- 交叉类型 使用&关键字,取并集 对于分页业务中的ajax请求可以这样取定义参数类型 索引类型 通过keyo...
- 联合类型 联合类型意思就是可以定义多种类型 变量使用场景 比如手机号 和座机 let num: number =...
- 交叉类型 格式: type1 & type2 & ... 交叉类型是将多个类型合并为一个类型 联合类型 格式: ...