Typescript中一些不理解的概念解釋(泛型、斷言、解構、枚舉)


新的項目想使用typescript,因此又對其概念及使用過一遍,本文主要記錄下對之前一些概念不太理解的地方。

1、泛型

定義: 在定義函數、接口或者類的時候,不預先指定具體的類型,而是在使用的時候再指定類型。提高可重用性。

function createArray<T>(length: number, value: T): Array<T>{
    let result: T[] = [];
    for (let i = 0; i < length; i++){
        result[i] = value
    }
    return result
}
console.log("數字", createArray(3, 1));
console.log("字符串", createArray(3, 'a'));

定義函數createArray它擁有泛型參數(value),用T表示;該函數同時約定返回一個T類型的數組(Array )。

當value是數字1的時候,返回數字數組;
當value是字符串a的時候,返回字符串數組;

2、解構

ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。主要是可以簡化代碼,更加便於理解。

// 常用1
// 使用
let [a,b,c] = [1,2,3];
// 代替
let a = 1;
let b = 2;
let c = 3;

// 常用2
let obj = {a:1,b:2};
let obj2 = {...obj}

3、斷言

當TS不確定一個聯合類型的變量是哪個類型的時候,只能訪問此聯合類型的所有類型的共有屬性和方法;但有時候確實需要在不確定類型的時候就訪問一個類型的屬性或方法。

function getLength(something: string | number): number{
    if((<string>something).length){
        return (<string>something).length
    }else{
        return something.toString().length
    }
}

用法1:在需要斷言的變量前加上

function getLength(something: string | number): number{
    if((something as string).length){
        return (something as string).length
    }else{
        return something.toString().length
    }
}

4、枚舉

使用枚舉,可以定義一些帶名字的常量。用於清晰地表達意圖或創建一組有區別的用例。
數字類型枚舉:默認情況下,第一個枚舉值是0,后續至依次增1

enum Color { 
    red,
    blue,
    yellow
}

let col = Color.blue;
alert(col);
// 1

字符串枚舉:

enum ProName {
    SUCCESS = 'ok',
    ERROR = 'error'
}

alert(ProName.ERROR);
// "error"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM