真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

TypeScript入門-泛型-創(chuàng)新互聯(lián)

泛型

要創(chuàng)建一個可重用的組件,其中的數(shù)據(jù)類型就必須要兼容很多的類型,那么如何兼容呢,TypeScript提供了一個很好的方法:泛型

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、商南網(wǎng)站維護(hù)、網(wǎng)站推廣。

Hello World

要兼容多種數(shù)據(jù)格式,可能會有人想到any,即

function identify(arg: any): any{    return arg;
}

使用any存在一個問題,有可能傳入的值和返回的值不是同一種值,例如,傳入數(shù)字,但是不確定返回的是什么值

要解決這個問題,我們需要引入類型變量-一種特殊的變量,只用于表示類型不表示值

function identity(arg: T): T {    return arg;
}

給identify添加了類型變量T,用來捕獲傳入值的類型,然后將返回值的類型也設(shè)置為T,就實(shí)現(xiàn)了傳入值和返回值為同一類型值的需求

我們把identify這個函數(shù)叫做泛型,因?yàn)樗m用于所有類型,并且不會有any類型存在的問題

使用泛型的方法有兩種:

1、傳入所有的參數(shù),包括類型參數(shù)

let output = identify('qwe');

2、利用類型推論--即編譯器會根據(jù)傳入的參數(shù)自動地幫助我們確定T的類型

let output = identify('qwe');

泛型變量

在泛型中,我們要合理正確的使用泛型變量T,要牢記T表示任何類型

錯誤使用:

function identify(arg: T): T {
    console.log(arg.length);// Error: T doesn't have .length
    return arg;
}

在泛型中我們使用了length這個屬性,但是T代表任何類型,所以有可能是number,而number是沒有l(wèi)ength屬性的,所以會報(bào)錯

如果想要使用length這個屬性,我們可以創(chuàng)建數(shù)組

function identify(arg: T[]): T[] {
    console.log(arg.length);// Error: T doesn't have .length
    return arg;
}

泛型類型

泛型函數(shù)的類型與非泛型函數(shù)的類型沒什么不同,只是有一個類型參數(shù)在最前面,像函數(shù)聲明一樣:

function identify(arg: T): T {    return arg;
}

let myIdentify: (arg: U) => U = identify;

從上面的代碼中可以看出也可以使用不同的泛型參數(shù)名,只要在數(shù)量上和使用方式上能對應(yīng)上就可以

當(dāng)然也可以把泛型參數(shù)當(dāng)做一個接口的參數(shù),這樣就可以知道這個接口具體用的是那種類型

TypeScript入門-泛型

interface GenericIdnetify{
    (arg: T): T;
}function identity(arg: T): T{    return arg;
}

let myGenericidentify: GenericIdnetify = identity;

TypeScript入門-泛型

泛型類

泛型類看上去與泛型接口差不多。 泛型類使用( <>)括起泛型類型,跟在類名后面。

TypeScript入門-泛型

class GenericNumber {
    zeroValue: T;
    add: (x: T, y: T) => T;
}

let myGenericNumber = new GenericNumber();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

TypeScript入門-泛型

泛型約束

在前面的泛型變量中遇到了一個問題,就是在泛型中調(diào)用參數(shù)的length時,如果參數(shù)沒有Length屬性會報(bào)錯,而使用泛型約束,就是只有滿足一定的條件才可以使用這個泛型

為此,我們定義一個接口來描述約束條件。 創(chuàng)建一個包含 .length屬性的接口,使用這個接口和extends關(guān)鍵字還實(shí)現(xiàn)約束:

TypeScript入門-泛型

interface lengthwise{
    length: number;
}function identity(arg: T): T{
    console.log(arg.length);    return arg;
}

identity(123); //erroridentity('qwe'); //true

TypeScript入門-泛型

當(dāng)傳入123時,沒有l(wèi)ength屬性,就報(bào)錯,而傳入字符串qwe時則完全正確

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文名稱:TypeScript入門-泛型-創(chuàng)新互聯(lián)
瀏覽路徑:http://weahome.cn/article/ddshjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部