Typescript学习 交叉类型 函数重载

同名基础类型属性的合并
interface X {
    c: string
    d: string
}

interface Y {
    c: string
    e: number
}

type XY = X & Y
type YX = Y & X

let p: XY
let q: YX

p = {
    c: "a",
    d: "a",
    e: 5
}

q = {
    c: "a",
    d: "a",
    e: 5 
}
同名非基础类型属性的合并
interface D { d: boolean; }
interface E { e: string; }
interface F { f: number; }
interface A { x: D; }
interface B { x: E; }
interface C { x: F; }
type ABC = A & B & C;
let abc: ABC= {x: {d: true,e: 'semlinker',f: 666  }};
console.log('abc:', abc);

在这里插入图片描述

函数重载
type Combinable = string | number;

function add(a: number, b: number): number
function add(a: string, b: string): string
function add(a: string, b: number): string
function add(a: number, b: string): string
function add(a: Combinable, b: Combinable) {
    if (typeof a === "string" || typeof b === "string") {
        return a.toString() + b.toString()
    }
    return a + b
}

console.log(add(5, 5)) // 10
console.log(add("a", "b")) // ab
console.log(add("a", 5)) // a5
console.log(add(5, "b")) // 5b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值