国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TypeScript高級(jí)類型:聯(lián)合類型、交叉類型和類型別名

這篇具有很好參考價(jià)值的文章主要介紹了TypeScript高級(jí)類型:聯(lián)合類型、交叉類型和類型別名。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

引言

TypeScript 是一門強(qiáng)類型語(yǔ)言,其高級(jí)類型功能使得開(kāi)發(fā)者能夠更加靈活地定義類型并對(duì)其進(jìn)行操作,以便于更好地編寫可維護(hù)和可擴(kuò)展的代碼。
在本文中,將著重討論三種高級(jí)類型:聯(lián)合類型、交叉類型和類型別名。我們將詳細(xì)介紹這些類型,并且還會(huì)提供一些有用的代碼示例。

聯(lián)合類型

  • 聯(lián)合類型是最常見(jiàn)的高級(jí)類型之一,是指一個(gè)變量可以有不同的數(shù)據(jù)類型,通過(guò) | 符號(hào)來(lái)表示,它的目的是將多個(gè)類型組合成一個(gè)類型。這些類型可以是基本類型,也可以是自定義類型。
    // 聯(lián)合類型的基本用法
    let myVar: string | number;
    myVar = 'hello';
    myVar = 123;
    
  • 在這里,我們定義了一個(gè) myVar 變量,它可以是字符串或數(shù)字類型。我們可以將任何一個(gè)字符串或數(shù)字賦給 myVar 變量。
  • 聯(lián)合類型用于在編寫代碼時(shí)可以接受多種類型的情況。例如,如果我們希望接受一個(gè)參數(shù),它可能是字符串或數(shù)字,我們可以使用聯(lián)合類型。示例如下:
    // 在函數(shù)的形參中使用聯(lián)合類型
    function printId(id: number | string) {
        console.log(`id is ${id}`);
    }
    printId(101); // 輸出:id is 101 printId("abc"); // 輸出:id is abc
    
  • 在上面的代碼中,我們定義了一個(gè)名為 printId 的函數(shù),它接受一個(gè)參數(shù) id ,它可以是數(shù)字或字符串。
    // 自定義類型
    interface Cat {
        name: string;
        purr: () => void;
    }
    interface Dog {
        name: string;
        bark: () => void;
    }
    function feedPet(pet: Cat | Dog) {
        console.log("Feeding " + pet.name);
        if ("purr" in pet) {
            pet.purr();
        } else if ("bark" in pet) {
            pet.bark();
        }
    }
    
  • 在這個(gè)例子中,我們定義了一個(gè) feedPet 函數(shù),它接受一個(gè)參數(shù) pet ,這個(gè)參數(shù)是 Cat 或 Dog 類型。當(dāng)我們調(diào)用這個(gè)函數(shù)時(shí),我們可以傳遞一個(gè)貓或狗的對(duì)象。在函數(shù)體內(nèi),我們檢查 pet 對(duì)象是否有“ purr ”或“ bark ”屬性,然后相應(yīng)
    地調(diào)用 pet 的方法。

聯(lián)合類型的優(yōu)點(diǎn)是在一些情況下可以簡(jiǎn)化代碼,但缺點(diǎn)是會(huì)降低代碼的可讀性和可維護(hù)性。當(dāng)聯(lián)合類型過(guò)多時(shí),代碼的復(fù)雜度會(huì)顯著增加。

交叉類型

  • 交叉類型是將多個(gè)類型組合成一個(gè)類型,通過(guò) & 符號(hào)來(lái)表示。這些類型可以同時(shí)擁有所有類型的屬性和方法。我們可以將交叉類型看作是“并集”類型。示例如下:
    interface Person {
        name: string;
        age: number;
    }
    interface Employee {
        company: string;
    }
    type EmployeePerson = Employee & Person;
    const employeePerson: EmployeePerson = {
        name: "John",
        age: 30,
        company: "ABC Inc",
    };
    console.log(employeePerson); // 輸出:{ name: 'John', age: 30, company: 'ABC Inc' }
    
  • 在上面的代碼中,我們定義了兩個(gè)接口 Person 和 Employee 。Person 接口定義了一個(gè)人的屬性(名稱和年齡),而 Employee 接口定義了一個(gè)雇員的屬性(公司)。我們使用 & 符號(hào)定義 EmployeePerson 類型,這個(gè)類型將 Person 和 Employee 類型組合成一個(gè)類型。最后,我們創(chuàng)建了一個(gè) EmployeePerson 類型的對(duì)象,并輸出它的屬性。
  • 再來(lái)看一個(gè)例子:
    interface Student {
        name: string;
        age: number;
    }
    interface Teacher {
        name: string;
        teachingSubject: string;
    }
    type StudentTeacher = Student & Teacher;
    let jenny: StudentTeacher = {
        name: 'Jenny',
        age: 25,
        teachingSubject: 'Math'
    }
    
  • 在這里,我們定義了兩個(gè)接口:Student 和 Teacher 。我們還定義了一個(gè)類型別名 StudentTeacher ,它是 Student 和 Teacher 的交集。然后我們創(chuàng)建一個(gè) StudentTeacher 類型的變量 jenny ,它包含 name、age 和 teachingSubject 屬性。

交叉類型的優(yōu)點(diǎn)是可以讓我們快速定義具有多種屬性和方法的對(duì)象類型,但缺點(diǎn)是當(dāng)交叉類型過(guò)多時(shí),代碼的復(fù)雜度也會(huì)顯著增加。

類型別名

  • 類型別名是一種命名類型的方式,是指為一種類型定義一個(gè)新名字。類型別名可以代替較長(zhǎng)或重復(fù)的類型定義。在 TypeScript 中,我們可以使用 type 關(guān)鍵字 來(lái)創(chuàng)建類型別名。例如:
    type UserId = number | string;
    function printUserId(id: UserId) {
        console.log(`id is ${id}`);
    }
    printUserId(101); // 輸出:id is 101
    printUserId("abc"); // 輸出:id is abc
    
  • 在上面的代碼中,我們使用type關(guān)鍵字定義了一個(gè)類型別名 UserId ,它可以是數(shù)字或字符串。我們定義了一個(gè)名為 printUserId 的函數(shù)來(lái)接受 UserId 類型的參數(shù)。最后,我們調(diào)用這個(gè)函數(shù)兩次,分別傳遞數(shù)字和字符串參數(shù)。
  • 再來(lái)看一個(gè)例子
    type User = {
        name: string;
        age: number;
        email: string;
    }
    type UserID = string | number;
    type UserCollection = Record<UserID, User>;
    let users: UserCollection = {
        one: {
            name: 'Tom',
            age: 20,
            email: 'tom@example.com'
        },
        two: {
            name: 'Jerry',
            age: 22,
            email: 'jerry@example.com'
        }
    }
    
  • 在這里,我們定義了一個(gè)類型別名 User ,它代表一個(gè)用戶對(duì)象,包含 name 、age 和 email 屬性。我們還定義了一個(gè)類型別名 UserID ,它是字符串或數(shù)字類型。最后,我們定義了一個(gè)類型別名 UserCollection ,它是一個(gè)以 UserID 為鍵,User 為值的 Record 對(duì)象,表示一個(gè)用戶集合。在示例中,我們創(chuàng)建了一個(gè) UserCollection 對(duì)象 users ,包含兩個(gè)用戶對(duì)象,它們的 ID 分別為 one 和 two 。

類型別名的優(yōu)點(diǎn)是可以讓我們輕松地定義復(fù)雜的類型,同時(shí)也可以讓代碼更加易讀易懂。但缺點(diǎn)是過(guò)度使用類型別名會(huì)讓代碼變得冗長(zhǎng)而難以維護(hù)。

注意

TypeScript 高級(jí)類型的聯(lián)合類型、交叉類型和類型別名各具優(yōu)點(diǎn),我們可以在不同場(chǎng)景下合理地使用它們。需要注意的是,過(guò)度使用高級(jí)類型會(huì)導(dǎo)致代碼的復(fù)雜度增加,影響代碼的可讀性和可維護(hù)性。因此,在使用高級(jí)類型時(shí)需要慎重考慮。

結(jié)論

在本文中,我們介紹了三種高級(jí)類型:聯(lián)合類型、交叉類型類型別名。這些類型可以幫助我們更好地編寫可維護(hù)和可擴(kuò)展的代碼。我們建議您在編寫代碼時(shí)使用這些類型,以提高代碼的可讀性和可維護(hù)性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-499591.html

到了這里,關(guān)于TypeScript高級(jí)類型:聯(lián)合類型、交叉類型和類型別名的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • TypeScript 類型別名(Type Aliases)

    在 TypeScript 中,類型別名(Type Aliases)是一種給現(xiàn)有類型起別名的方式。它可以幫助提高代碼的可讀性和可維護(hù)性,尤其是當(dāng)你需要使用復(fù)雜或重復(fù)的類型注解時(shí)。 基本使用 本段代碼使用了類型別名? N1 ?來(lái)表示一個(gè)可以是? number 、 string ?或者? boolean ?類型的聯(lián)合類型。接

    2024年02月13日
    瀏覽(20)
  • TypeScript 學(xué)習(xí)筆記(二):接口與類型別名、字面量類型

    TypeScript 學(xué)習(xí)筆記(二):接口與類型別名、字面量類型

    在面向?qū)ο蟮木幊讨?,接口是一種規(guī)范的定義,它定義了行為和動(dòng)作的規(guī)范,在程序設(shè)計(jì)里面,接口起到一種限制和規(guī)范的作用。接口定義了某一批類所需要遵守的規(guī)范,接口不關(guān)心這些類的內(nèi)部狀態(tài)數(shù)據(jù),也不關(guān)心這些類里方法的實(shí)現(xiàn)細(xì)節(jié),它只規(guī)定這批類里必須提供某些

    2024年02月16日
    瀏覽(24)
  • typeScript中的類型斷言和類型別名、字符串字面量類型

    目錄 1.類型斷言 語(yǔ)法 ?2.類型斷言的用途 2.1?將一個(gè)聯(lián)合類型斷言為其中一個(gè)類型? ?2.2 將一個(gè)父類斷言為更加具體的子類 ?2.3?將任何一個(gè)類型斷言為?any 2.4?將?any?斷言為一個(gè)具體的類型 類型斷言的限制 雙重?cái)嘌?類型斷言 vs 類型轉(zhuǎn)換 類型斷言 vs 類型聲明 類型斷言 vs

    2024年02月04日
    瀏覽(20)
  • TypeScript 聯(lián)合類型,類型推斷,類型斷言

    取值可以為多種類型中的一個(gè) 當(dāng)變量需要調(diào)用某屬性的時(shí)候,有不確定當(dāng)前的類型是什么,可以使用類型斷言; 類型斷言的兩種方式: 1,類型 變量名; 2,值 as 類型; 沒(méi)有明確的指定類型的情況下推斷出一個(gè)類型;

    2024年02月15日
    瀏覽(28)
  • typescript & 交叉類型

    typescript & 交叉類型

    TypeScript中的交叉類型是指將多個(gè)類型合并為一個(gè)類型。這使得我們可以將現(xiàn)有的多種類型疊加到一起成為一種類型,它包含了所需的所有類型的特性。 寫這篇文章先問(wèn)大家一個(gè)問(wèn)題,如何讓一個(gè)對(duì)象既有a類型約束,又有b類型約束? 如果你看了我這篇文章typescrip接口 interface詳解

    2024年02月07日
    瀏覽(27)
  • Typescript的類型推導(dǎo)與聯(lián)合類型

    考慮以下 TypeScript 代碼片段: 1、請(qǐng)解釋 processInput 函數(shù)的作用和輸入?yún)?shù)的類型。 2、解釋變量 example1 和 example2 的類型注解。 3、描述 TypeScript 在調(diào)用 processInput(example1) 和 processInput(example2) 時(shí)是如何進(jìn)行類型推導(dǎo)的。 解答: 1、processInput 函數(shù)接受一個(gè)參數(shù) input,該參數(shù)的類

    2024年01月21日
    瀏覽(21)
  • TypeScript中的對(duì)象類型(可選屬性 只讀屬性 交叉類型)

    一、定義對(duì)象類型 在TypeScript中定義對(duì)象類型有以下三種方式: 1. 匿名對(duì)象類型 匿名對(duì)象類型是在定義變量時(shí)直接使用花括號(hào){},來(lái)定義一個(gè)對(duì)象類型。例如: 上述代碼中定義了一個(gè)person變量,它的類型為對(duì)象,它有兩個(gè)屬性:name和age,其中name屬性的類型為字符串,age屬性

    2024年02月11日
    瀏覽(45)
  • TypeScript 中的字面量類型和聯(lián)合類型特性

    字面量類型和聯(lián)合類型是 TypeScript 中常用的類型特性。 1. 字面量類型: 字面量類型是指具體的值作為類型。例如,字符串字面量類型可以通過(guò)給定的字符串字面量來(lái)限制變量的取值范圍。 2. 聯(lián)合類型: 聯(lián)合類型可以用來(lái)表示一個(gè)變量可以是多個(gè)類型中的任意一個(gè)。使用 |

    2024年02月15日
    瀏覽(14)
  • 前端TypeScript學(xué)習(xí)day04-交叉類型與泛型

    前端TypeScript學(xué)習(xí)day04-交叉類型與泛型

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動(dòng)力,如果看完對(duì)你有幫助,請(qǐng)留下您的足跡) ? ? ? ? ?? 目錄 交叉類型 泛型 創(chuàng)建泛型函數(shù) 調(diào)用泛型函數(shù): 簡(jiǎn)化調(diào)用泛型函數(shù): 泛型約束? 指定更加具體的類型 添加約束? 泛型接口? 泛型類 泛型工具類型? Partial?

    2024年02月08日
    瀏覽(28)
  • TypeScript之高級(jí)類型

    除了 string 、 number 、 boolean ?這種基礎(chǔ)類型外,在? typescript ?類型聲明中還存在一些高級(jí)的類型應(yīng)用 這些高級(jí)類型,是 typescript 為了保證語(yǔ)言的靈活性,所使用的一些語(yǔ)言特性。這些特性有助于我們應(yīng)對(duì)復(fù)雜多變的開(kāi)發(fā)場(chǎng)景 常見(jiàn)的高級(jí)類型有如下: 交叉類型 聯(lián)合類型 類型

    2024年02月06日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包