最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript之元組、數(shù)組及as?const的使用

 更新時(shí)間:2023年10月27日 11:15:32   作者:程序員啊楠  
TypeScript中的元組、數(shù)組和as?const關(guān)鍵字對(duì)于類型安全性和代碼可讀性非常重要,本文主要介紹了TypeScript之元組、數(shù)組及as?const的使用,感興趣的可以了解一下

一、元組 && 數(shù)組

在 TS 中,元組表示 這個(gè)數(shù)組有不同的類型 。簡(jiǎn)單的一句話來(lái)表述,如果類型相同的一組數(shù)據(jù)就是數(shù)組,反之就是元組;數(shù)組的 api 對(duì)于元組來(lái)講也是通用的(push、pop等),只是類型不同;

1、數(shù)組的定義

//定義數(shù)組的方式
let arr: number[] = [1, 2, 3]; //第一種: 必須全部是number類型;

let arr2: Array<number> = [1, 2, 3]; // 第二種

let arr3: Array<number> = new Array(4); // 第三種:表示定義一個(gè)數(shù)組的長(zhǎng)度,一般固定一個(gè)數(shù)組的長(zhǎng)度時(shí)這個(gè)方法比較方便
let arr4 = new Array<number>(4);  //這種寫(xiě)法和 arr3 效果是一樣的
console.log(arr3.length);

// interface 定義
interface NumberArray {
    [index: number]: number;
}

let arr5: NumberArray = [1, 2, 3];

//類數(shù)組
function sum() {
    let args: IArguments = arguments;

    // args.callee()
}

2、元組的定義

// 類型固定的元組
// let arrAny: any[] = [1, 'TEST']; 奇葩且沒(méi)有意義的寫(xiě)法,不推薦
let tuple1: [number, string, boolean] = [1, 'TEST', false];

// 數(shù)組和元組的區(qū)別
// 利用函數(shù)動(dòng)態(tài)拼合一個(gè)元組
function useFetch() {
    const response: string = "Barry";
    const age: number = 25;
    return [response, age] as const;
}
// 這里如果不使用 as const 會(huì)發(fā)現(xiàn) 我們結(jié)構(gòu)出來(lái)的數(shù)組類型是response: string | number
// 使用完 as const 以后 為string,as const 也叫類型斷言
const [response] = useFetch() // 發(fā)現(xiàn) const response: string | number

// 數(shù)組轉(zhuǎn)化元組 泛型
function useFetch2() {
    const response: string = "Barry";
    const age: number = 25;
    return tuplify(response, age)
}

function tuplify<T extends unknown[]>(...elements: T): T {
    return elements;

}

三、as  const

1.不強(qiáng)制類型轉(zhuǎn)換

as const 被稱為 const 類型斷言,const 類型斷言告訴編譯器,要將這個(gè)表達(dá)式推斷為最具體的類型,如果不使用它的話,編譯器會(huì)使用默認(rèn)的類型推斷行為,可能會(huì)把表達(dá)式推斷為更通用的類型。

注意這里 const 是類型斷言,不是強(qiáng)制轉(zhuǎn)換,在 typescript 中,const 類型斷言,會(huì)從編譯后的 JavaScript 中完全刪除,所以使用或者不使用 as const 的應(yīng)用程序,在運(yùn)行時(shí)完全沒(méi)有區(qū)別。

所以 as const 只是讓編譯器更好的了解代碼的意圖,讓它更加精確的區(qū)分正確和錯(cuò)誤的代碼。

stack overflow : What does the "as const" mean in TypeScript and what is its use case?

https://stackoverflow.com/questions/66993264/what-does-the-as-const-mean-in-typescript-and-what-is-its-use-case

2.強(qiáng)制類型轉(zhuǎn)換

// 強(qiáng)制類型轉(zhuǎn)換

function getLength(str: string | number): number {
    // if((<String>str).length) 上下兩種方式
    if ((str as string).length) {
        return (<String>str).length
    } else {
        return str.toString().length;
    }
}

3.類型別名

// 類型別名

type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
    if (typeof n === 'string') {
        return n
    }
}

// interface  實(shí)現(xiàn) 類型

interface A {

}
function helper(options: A): A {
    return options
}

到此這篇關(guān)于TypeScript之元組、數(shù)組以及as const的文章就介紹到這了,更多相關(guān)TypeScript 元組、數(shù)組以及as const內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于JavaScript實(shí)現(xiàn)圖片剪切效果

    基于JavaScript實(shí)現(xiàn)圖片剪切效果

    這篇文章主要介紹了用JavaScript實(shí)現(xiàn)圖片剪切效果,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 關(guān)閉ie窗口清除Session的解決方法

    關(guān)閉ie窗口清除Session的解決方法

    本篇文章主要是對(duì)關(guān)閉ie窗口清除Session的解決方法進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • 微信小程序?qū)崿F(xiàn)多層級(jí)復(fù)選框菜單

    微信小程序?qū)崿F(xiàn)多層級(jí)復(fù)選框菜單

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)多層級(jí)復(fù)選框菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • js下為表格內(nèi)部動(dòng)態(tài)添加行的代碼

    js下為表格內(nèi)部動(dòng)態(tài)添加行的代碼

    最近的一個(gè)項(xiàng)目中在保存表單數(shù)據(jù)時(shí),要用到一個(gè)動(dòng)態(tài)添加行的功能。平時(shí)動(dòng)態(tài)添加行只是在表格的最下面添加,現(xiàn)在在表格中間動(dòng)態(tài)添加行,而且表格內(nèi)部是包含并且單元格的,其實(shí)很簡(jiǎn)單,下面貼出代碼。
    2010-06-06
  • JavaScript事件監(jiān)聽(tīng)器詳細(xì)介紹

    JavaScript事件監(jiān)聽(tīng)器詳細(xì)介紹

    這篇文章主要介紹了JavaScript事件監(jiān)聽(tīng)器詳細(xì)介紹,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • 總結(jié)Javascript中數(shù)組各種去重的方法

    總結(jié)Javascript中數(shù)組各種去重的方法

    相信大家都知道網(wǎng)上關(guān)于Javascript中數(shù)組去重的方法很多,這篇文章給大家總結(jié)Javascript中數(shù)組各種去重的方法,相信本文對(duì)大家學(xué)習(xí)和使用Javascript具有一定的參考借鑒價(jià)值,有需要的下面來(lái)一起看看。
    2016-10-10
  • 詳解微信小程序中的頁(yè)面代碼中的模板的封裝

    詳解微信小程序中的頁(yè)面代碼中的模板的封裝

    這篇文章主要介紹了詳解微信小程序中的頁(yè)面代碼中的模板的封裝的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下
    2017-10-10
  • three.js中3D視野的縮放實(shí)現(xiàn)代碼

    three.js中3D視野的縮放實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了three.js中3D視野的縮放實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 如何使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫(huà)詳解

    如何使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫(huà)詳解

    這篇文章主要給大家介紹了關(guān)于如何使用less實(shí)現(xiàn)隨機(jī)下雪動(dòng)畫(huà)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • JavaScript判斷奇偶數(shù)的2種方法代碼舉例

    JavaScript判斷奇偶數(shù)的2種方法代碼舉例

    這篇文章主要給大家介紹了關(guān)于JavaScript判斷奇偶數(shù)的2種方法,奇數(shù)和偶數(shù)的判斷是數(shù)學(xué)運(yùn)算中經(jīng)常碰到的問(wèn)題,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評(píng)論

多伦县| 张家川| 深圳市| 米易县| 瓦房店市| 湛江市| 获嘉县| 宝兴县| 平顶山市| 太仆寺旗| 永新县| 敦化市| 云龙县| 六枝特区| 平山县| 吉木乃县| 始兴县| 江西省| 邵武市| 安吉县| 北碚区| 邵东县| 乡城县| 敦化市| 电白县| 肃北| 陆川县| 华安县| 东方市| 营口市| 寻甸| 井冈山市| 陕西省| 邢台市| 海门市| 东至县| 晴隆县| 西宁市| 蚌埠市| 太白县| 河间市|