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

【TypeScript】TypeScript中的泛型

這篇具有很好參考價值的文章主要介紹了【TypeScript】TypeScript中的泛型。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

泛型的意義及語法

定義一個函數(shù)或類時,有些情況下無法確定其中要使用的具體類型(返回值、參數(shù)、屬性的類型不能確定),此時泛型便能夠發(fā)揮作用。

  • 舉個例子:

    • function test(arg: any): any{
      	return arg;
      }
      
    • 上例中,test函數(shù)有一個參數(shù)類型不確定,但是能確定的時其返回值的類型和參數(shù)的類型是相同的,由于類型不確定所以參數(shù)和返回值均使用了any,但是很明顯這樣做是不合適的,首先使用any會關(guān)閉TS的類型檢查,其次這樣設(shè)置也不能體現(xiàn)出參數(shù)和返回值是相同的類型

    • 使用泛型:

    • function test<T>(arg: T): T{
      	return arg;
      }
      
    • 這里的<T>就是泛型,T是我們給這個類型起的名字(不一定非叫T),設(shè)置泛型后即可在函數(shù)中使用T來表示該類型。所以泛型其實很好理解,就表示某個類型。

    • 那么如何使用上邊的函數(shù)呢?

      • 方式一(直接使用):

        • test(10)
          
        • 使用時可以直接傳遞參數(shù)使用,類型會由TS自動推斷出來,但有時編譯器無法自動推斷時還需要使用下面的方式

      • 方式二(指定類型):

        • test<number>(10)
          
        • 也可以在函數(shù)后手動指定泛型

    • 可以同時指定多個泛型,泛型間使用逗號隔開:

      • function test<T, K>(a: T, b: K): K{
            return b;
        }
        
        test<number, string>(10, "hello");
        
      • 使用泛型時,完全可以將泛型當成是一個普通的類去使用

    • 類中同樣可以使用泛型:

      • class MyClass<T>{
            prop: T;
        
            constructor(prop: T){
                this.prop = prop;
            }
        }
        
    • 除此之外,也可以對泛型的范圍進行約束

      • interface MyInter{
            length: number;
        }
        
        function test<T extends MyInter>(arg: T): number{
            return arg.length;
        }
        
      • 使用T extends MyInter表示泛型T必須是MyInter的子類,不一定非要使用接口類和抽象類同樣適用。

復雜例子:可擴展的數(shù)據(jù)結(jié)構(gòu)

現(xiàn)在讓我們看一個更復雜的例子,使用泛型創(chuàng)建一個可擴展的數(shù)據(jù)結(jié)構(gòu)。假設(shè)我們要實現(xiàn)一個Stack(棧)數(shù)據(jù)結(jié)構(gòu),它可以存儲不同類型的元素。下面是使用泛型實現(xiàn)的Stack類:

class Stack<T> {
  private items: T[] = [];

  push(item: T): void {
    this.items.push(item);
  }

  pop(): T | undefined {
    return this.items.pop();
  }

  isEmpty(): boolean {
    return this.items.length === 0;
  }
}

// 使用泛型類
const stack = new Stack<number>();
stack.push(1);
stack.push(2);
stack.push(3);

while (!stack.isEmpty()) {
  console.log(stack.pop()); // 輸出:3, 2, 1
}

在上面的例子中,我們使用泛型類Stack來創(chuàng)建一個可以存儲不同類型元素的棧。通過使用泛型,我們可以在創(chuàng)建Stack實例時指定具體的元素類型。這使得我們可以在同一個棧中存儲不同類型的數(shù)據(jù),并保持類型安全。

例子出處文章來源地址http://www.zghlxwxcb.cn/news/detail-705446.html

到了這里,關(guān)于【TypeScript】TypeScript中的泛型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 16.【TypeScript 教程】TypeScript 泛型(Generic)

    本節(jié)開始介紹 TypeScript 一些進階知識點,第一個要介紹的泛型是 TypeScript 中非常重要的一個概念,它是一種用以增強函數(shù)、類和接口能力的非??煽康氖侄巍?使用泛型,我們可以輕松地將那些輸入重復的代碼,構(gòu)建為可復用的組件,這給予了開發(fā)者創(chuàng)造靈活、可重用代碼的能

    2024年01月18日
    瀏覽(39)
  • TypeScript 在前端開發(fā)中的應用實踐

    TypeScript 已經(jīng)成為前端開發(fā)領(lǐng)域越來越多開發(fā)者的首選工具。它是一種靜態(tài)類型的超集,由 Microsoft 推出,為開發(fā)者提供了強大的靜態(tài)類型檢查、面向?qū)ο缶幊毯湍K化開發(fā)的特性,解決了 JavaScript 的動態(tài)類型特性帶來的一些問題。 在本篇博文中,我們將深入探討 TypeScript 在

    2024年02月15日
    瀏覽(29)
  • 前端經(jīng)典面試題 | 吊打面試官系列 之 說說你對TypeScript 和 JavaScript的理解

    ??? 前端經(jīng)典面試題 專欄:吊打面試官系列 之 說說你對TypeScript 和 JavaScript的理解 ????? 個人簡介:一個不甘平庸的平凡人?? ? 個人主頁:CoderHing的個人主頁 ?? 格言: ?? 路漫漫其修遠兮,吾將上下而求索?? ?? 你的一鍵三連是我更新的最大動力?? 目錄 一、回答

    2024年01月17日
    瀏覽(41)
  • TypeScript在前端開發(fā)中的重要性

    近年來, TypeScript 在前端開發(fā)中的重要性逐漸得到認可。作為一種靜態(tài)類型的 JavaScript 的超集, TypeScript 通過引入靜態(tài)類型、接口、類等特性,為前端開發(fā)帶來了許多優(yōu)勢。本文將探討 TypeScript 在前端開發(fā)中的重要性,并通過代碼論證其價值。 首先, TypeScript 通過引入靜態(tài)類

    2024年02月11日
    瀏覽(28)
  • 前端(六)——TypeScript在前端中的重要性與應用

    前端(六)——TypeScript在前端中的重要性與應用

    ??博主:小貓娃來啦 ??文章核心: TypeScript在前端中的重要性與應用 隨著Web應用的復雜性不斷增加,開發(fā)人員需要更強大的工具來應對這些挑戰(zhàn)。TypeScript作為一種靜態(tài)類型語言,滿足了許多開發(fā)者對代碼質(zhì)量和可維護性的需求。下面我們將深入探討TypeScript在前端中的定位

    2024年02月16日
    瀏覽(52)
  • Java中的泛型

    Java中的泛型

    定義類、接口、方法時,同時聲明了一個或者多個類型變量(如:),稱為泛型類、泛型接口,泛型方法、它們統(tǒng)稱為泛型。 作用:泛型提供了在編譯階段約束所能操作的數(shù)據(jù)類型,并自動進行檢查的能力。這樣可以避免強制類型轉(zhuǎn)換,及其可能出現(xiàn)的異常。 泛型的本質(zhì):

    2024年02月01日
    瀏覽(25)
  • typeScript(泛型篇)

    軟件工程中,我們不僅要創(chuàng)建一致的定義良好的API,同時也要考慮可重用性。 組件不僅能夠支持當前的數(shù)據(jù)類型,同時也能支持未來的數(shù)據(jù)類型,這在創(chuàng)建大型系統(tǒng)時為你提供了十分靈活的功能。 在像C#和Java這樣的語言中,可以使用 泛型 來創(chuàng)建可重用的組件,一個組件可以

    2024年02月10日
    瀏覽(18)
  • TypeScript 進階之泛型

    避免代碼重復和創(chuàng)建可重用類型是編寫干凈代碼的重要部分。 將所有類型屬性都設(shè)置為可選 Required 與 Partial 相反。它構(gòu)造一個類型,其中需要該類型的所有屬性。它可用于確保沒有可選屬性出現(xiàn)在類型中。 多屬性的對象中摘取某些屬性。 鍵可以是字符串文字或字符串文字的

    2024年01月23日
    瀏覽(24)
  • C++中的泛型詳細講解

    它是一種泛化的編程方式,其實現(xiàn)原理為程序員編寫一個函數(shù)/類的代碼示例,讓編譯器去填補出不同的函數(shù)實現(xiàn)。允許您延遲編寫類或方法中的編程元素的數(shù)據(jù)類型的規(guī)范,直到實際在程序中使用它的時候。換句話說,泛型允許您編寫一個可以與任何數(shù)據(jù)類型一起工作的類或

    2024年02月12日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包