亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

TypeScript 交叉類型使用方法示例總結(jié)

 更新時(shí)間:2023年08月11日 09:16:15   作者:艾艾  
這篇文章主要為大家介紹了TypeScript 交叉類型使用方法示例總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一. TS類型系統(tǒng)中的交叉類型(交集)

type?A?=?string?&?number;?//?never,?一般我們都不會(huì)把交集用在基本類型,而是用在對(duì)象上
type?有右手的人?=?{
??right:?string;
};
type?C?=?有左手的人?|?有右手的人;
type?D?=?有左手的人?&?有右手的人;
const?d:?D?=?{
??left:?'yes',?//?會(huì)報(bào)錯(cuò),缺少right
};

二. 有左手的人能否有右手

//?場(chǎng)景一.?直接初始化賦值
type?有左手的人?=?{
??left:?string;
};
const?a:?有左手的人?=?{
??left:?'一米八',
??right:?'一米五',?//?這么寫會(huì)報(bào)錯(cuò)
};
//?場(chǎng)景二.?先聲明好對(duì)象,再賦值
type?有左手的人?=?{
??left:?string;
};
const?b?=?{
??left:?'一米八',
??right:?'一米五',
};
const?a:?有左手的人?=?b;?//?這么寫不報(bào)錯(cuò)

小結(jié)

場(chǎng)景一中的直接對(duì)象字面量聲明會(huì)觸發(fā)屬性匹配驗(yàn)證,而場(chǎng)景二中的先聲明變量再賦值的方式會(huì)繞過(guò)這種驗(yàn)證,因此不會(huì)報(bào)錯(cuò)。

三. 接口也能求交集

interface?Colorful?{
??color:?string;
}
interface?Circle?{
??radius:?number;
}
type?ColorfulCircle?=?Colorful?&?Circle;
const?CC:?ColorfulCircle?=?{
??color:?'red',
??radius:?11,
};

四. 使用&模擬繼承

type?Person?=?{
??name:?string;
??age:?number;
};
type?User?=?Person?&?{
??id:?number;
??email:?string;
};
const?u:?User?=?{
??name:?'Jack',
??age:?18,
??id:?1,
??email:?'Jack@alibaba.com',
};

五. 使用&時(shí)屬性沖突的場(chǎng)景

會(huì)求交集

//?場(chǎng)景一
type?Person?=?{
??name:?string;
??age:?number;
??id:?string;
};
type?User?=?Person?&?{
??id:?number;
??email:?string;
};
const?u:?User?=?{
??name:?'Jack',
??age:?18,
??id:?1?as?never,?//?這個(gè)變成了never,且必須存在
??email:?'Jack@alibaba.com',
};
//?場(chǎng)景二?User是never,?這是一種特殊的場(chǎng)景
type?Person?=?{
??id:?'A';
??name:?string;
??age:?number;
};
type?User?=?Person?&?{
??id:?'B';
??email:?string;
};

六. interface遇到?jīng)_突會(huì)如何

interface?Person?{
??id:?string;
??name:?string;
}
//?會(huì)報(bào)錯(cuò)?接口“User”錯(cuò)誤擴(kuò)展接口“Person”。屬性“id”的類型不兼容。不能將類型“number”分配給類型“string”。
interface?User?extends?Person?{
??id:?number;
??email:?string;
}

這里也可以看出,當(dāng)我們?nèi)懸恍┛蓴U(kuò)展的類型的時(shí)候interface會(huì)更好,如果寫的不合邏輯,在寫類型的瞬間就會(huì)報(bào)錯(cuò),如果用type只會(huì)給你搞出一個(gè)never,當(dāng)你用到的時(shí)候才會(huì)發(fā)現(xiàn)有問(wèn)題

七. 對(duì)函數(shù)類型的取交集

兩個(gè)函數(shù)類型求交集,最終會(huì)得到參數(shù)取并集,這個(gè)之后會(huì)詳細(xì)講,這里先看一下結(jié)論

type?A?=?{
??method:?(a:?number)?=>?void;
};
type?B?=?{
??method:?(a:?string)?=>?void;
}?&?A;
const?b:?B?=?{
??method(a)?{
????a;?//?number?|?string
??},
};

總結(jié)

交叉類型常用于有交集的類型A,B。如果A,B無(wú)交集可能會(huì)得到never,也有可能是屬性為never。

以上就是TypeScript 交叉類型使用方法示例總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于TypeScript 交叉類型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • jsf實(shí)現(xiàn)微信小程序簡(jiǎn)潔登錄頁(yè)面(附源碼)

    jsf實(shí)現(xiàn)微信小程序簡(jiǎn)潔登錄頁(yè)面(附源碼)

    這篇文章主要介紹了實(shí)現(xiàn)微信小程序簡(jiǎn)潔登錄頁(yè)面?,對(duì)于正在學(xué)習(xí)的小伙伴都有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • TypeScript交叉運(yùn)算的算法示例解析

    TypeScript交叉運(yùn)算的算法示例解析

    這篇文章主要為大家介紹了TypeScript交叉運(yùn)算的算法示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 高級(jí)前端面試手寫扁平數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)Tree

    高級(jí)前端面試手寫扁平數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)Tree

    這篇文章主要為大家介紹了高級(jí)前端面試手寫扁平數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)Tree示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Typescript tsconfig.json的配置詳情

    Typescript tsconfig.json的配置詳情

    這篇文章主要為大家介紹了Typescript tsconfig.json的配置詳情示例 ,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • ThreeJS?入門如何渲染出第一個(gè)3D圖形

    ThreeJS?入門如何渲染出第一個(gè)3D圖形

    這篇文章主要為大家介紹了ThreeJS?入門之如何渲染出第一個(gè)3D圖形實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Typescript編碼規(guī)范ESLint和Prettier使用示例詳解

    Typescript編碼規(guī)范ESLint和Prettier使用示例詳解

    這篇文章主要介紹了Typescript編碼規(guī)范ESLint和Prettier使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • TypeScript十大排序算法插入排序?qū)崿F(xiàn)示例詳解

    TypeScript十大排序算法插入排序?qū)崿F(xiàn)示例詳解

    這篇文章主要為大家介紹了TypeScript十大排序算法插入排序?qū)崿F(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • typescript快速上手的基礎(chǔ)知識(shí)篇

    typescript快速上手的基礎(chǔ)知識(shí)篇

    靜態(tài)類型的typescript與傳統(tǒng)動(dòng)態(tài)弱類型語(yǔ)言javascript不同,在執(zhí)行前會(huì)先編譯成javascript,因?yàn)樗鼜?qiáng)大的type類型系統(tǒng)加持,能讓我們?cè)诰帉懘a時(shí)增加更多嚴(yán)謹(jǐn)?shù)南拗?。注意,它并不是一門全新的語(yǔ)言,所以并沒(méi)有增加額外的學(xué)習(xí)成本
    2022-12-12
  • TypeScript中的數(shù)據(jù)類型enum?type?interface基礎(chǔ)用法示例

    TypeScript中的數(shù)據(jù)類型enum?type?interface基礎(chǔ)用法示例

    這篇文章主要為大家介紹了TypeScript中的數(shù)據(jù)類型enum?type?interface基礎(chǔ)用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • typescript?type類型使用梳理總結(jié)

    typescript?type類型使用梳理總結(jié)

    這篇文章主要為大家介紹了typescript?type類型使用梳理總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論