溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Typescript中數(shù)據(jù)類(lèi)型的示例分析

發(fā)布時(shí)間:2022-03-25 13:42:59 來(lái)源:億速云 閱讀:125 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)Typescript中數(shù)據(jù)類(lèi)型的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

    是什么

    typescript和javascript幾乎一樣,擁有相同的數(shù)據(jù)類(lèi)型,另外在javascript基礎(chǔ)上提供了更加實(shí)用的類(lèi)型供開(kāi)發(fā)使用。

    在開(kāi)發(fā)階段,可以為明確的變量定義為某種類(lèi)型,這樣typescript就能在編譯階段進(jìn)行類(lèi)型檢查,當(dāng)類(lèi)型不符合預(yù)期結(jié)果的時(shí)候則會(huì)出現(xiàn)錯(cuò)誤提示

    有哪些

    typescript的數(shù)據(jù)類(lèi)型主要有如下:

    • 1、boolean(布爾類(lèi)型)

    • 2、number(數(shù)字類(lèi)型)

    • 3、string(字符串類(lèi)型)

    • 4、array(數(shù)組類(lèi)型)

    • 5、tuple(元組類(lèi)型)

    • 6、enum(枚舉類(lèi)型)

    • 7、any(任意類(lèi)型)

    • 8、null和undefined類(lèi)型

    • 9、void類(lèi)型

    • 10、never類(lèi)型

    • 11、object(對(duì)象類(lèi)型)

    boolean

    let flag:boolean = true;
    flag = 123;    // 錯(cuò)誤
    flag = false;  // 正確

    number

    數(shù)字類(lèi)型,和javascript一樣,typescript的數(shù)值類(lèi)型都是浮點(diǎn)數(shù),可支持二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制。

    let num:number = 123;
    num = '456';   // 錯(cuò)誤
    num = 456;     // 正確

    進(jìn)制表示:

    let decLiteral:number = 6; // 十進(jìn)制
    let hexLiteral:number = 0xfood; // 十六進(jìn)制
    let binaryLiteral:number = 0b1010; // 二進(jìn)制
    let octalLiteral:number = 0o744; // 八進(jìn)制

    string

    字符串類(lèi)型,和javascript一樣,可以使用雙引號(hào)(")或單引號(hào)(')表示字符串

    let str:string = 'this is ts';
    str = 'test';

    作為超集,當(dāng)然也可以使用模板字符串進(jìn)行包裹,通過(guò)${}嵌入變量

    let name:string = `Gene`;
    let sentence:string = `Hello, my name is ${name}`

    array

    數(shù)組類(lèi)型,跟javascript一致,通過(guò)[]進(jìn)行包裹,有兩種寫(xiě)法:

    方式一:元素類(lèi)型后面接上[]

    let arr:string[] = ['12','23'];
    arr = ['45','56'];

    方式二:使用數(shù)組泛型,Array<元素類(lèi)型>:

    let arr:Array<number> = [1,2];
    arr = ['45','55'];

    tuple

    元組類(lèi)型,允許表示一個(gè)已知元素和類(lèi)型的數(shù)組,各元素的類(lèi)型不必相同

    let tupleArr:[number,string,boolean];
    tupleArr = [12,'34',true]; // yes
    tupleArr = [12,'34']; // no

    enum

    enum類(lèi)型是對(duì)javascript標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型的一個(gè)補(bǔ)充,使用枚舉類(lèi)型可以為一組數(shù)值賦予友好的名字

    enum Color {Red,Green,Blue}
    let c:Color = Color.Green;

    any

    可以指定任何類(lèi)型的值,在編程階段還不清楚類(lèi)型的變量指定一個(gè)類(lèi)型,不希望類(lèi)型檢查器對(duì)這些值進(jìn)行檢查而是直接讓它們通過(guò)編譯階段的檢查,這時(shí)候可以使用any類(lèi)型

    使用any類(lèi)型允許被賦值為任意類(lèi)型,甚至可以調(diào)用其屬性、方法

    let num:any = 123;
    num = 'str';
    num = true;

    定義存儲(chǔ)各種類(lèi)型數(shù)據(jù)的數(shù)組時(shí),示例代碼如下:

    let arrayList:any[] = [1,false,'fine'];
    arrayList[1] = 100;

    null和undefined

    在javascript中null表示 “什么都沒(méi)有”,是一個(gè)只有一個(gè)值的特殊類(lèi)型,表示一個(gè)空對(duì)象引用,而undefined表示一個(gè)沒(méi)有設(shè)置值的變量。

    默認(rèn)情況下null和undefined是所有類(lèi)型的子類(lèi)型,就是說(shuō)你可以把null和undefined賦值給number類(lèi)型的變量

    let num:number | undefined; // 數(shù)值類(lèi)型或者undefined
    console.log(num); // 正確
    num = 123; 
    console.log(num); // 正確

    但是ts配置了--strictNullChecks標(biāo)記,null和undefined只能賦值給void和它們各自

    void

    用于標(biāo)識(shí)方法返回值的類(lèi)型,表示該方法沒(méi)有返回值。

    function hello():void {
        alert('Hello Runoob')
    }

    never

    never是其他類(lèi)型(包括null和undefined)的子類(lèi)型,可以賦值給任何類(lèi)型,代表從不會(huì)出現(xiàn)的值,

    但是沒(méi)有類(lèi)型是never的子類(lèi)型,這意味著生命never的變量只能被never類(lèi)型所賦值。

    never類(lèi)型一般用來(lái)指定哪些總是會(huì)拋出異常,無(wú)限循環(huán)

    let a:never;
    a = 123; // 錯(cuò)誤的寫(xiě)法
    
    a = (() => { // 正確的寫(xiě)法
        throw new Errow('錯(cuò)誤')
    })()
    
    // 返回的never的函數(shù)必須存在無(wú)法達(dá)到的終點(diǎn)
    function error(message:string): never {
        thorw new Error(message);
    }

    object

    對(duì)象類(lèi)型,非原始類(lèi)型,常見(jiàn)的形式通過(guò){}進(jìn)行包裹

    let obj:object;
    obj = {name:'Zhang',age:23};

    關(guān)于“Typescript中數(shù)據(jù)類(lèi)型的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI