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

【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五)

這篇具有很好參考價值的文章主要介紹了【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


【TypeScript】類型斷言(五)



【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五),TypeScript實踐應(yīng)用,typescript,javascript,前端

一、簡介

TypeScript 斷言是指在編寫代碼時,開發(fā)者能夠告訴編譯器某個值的具體類型,從而可以在編譯階段強(qiáng)制類型檢查。

這其實在某些強(qiáng)類型語言中,類似于強(qiáng)制類型轉(zhuǎn)換的操作。

類型斷言有兩種形式實現(xiàn):

  • 尖括號語法
  • as語法
二、斷言形式
2.1 尖括號語法

尖括號語法:開發(fā)者可以使用 <類型> 的方式指定某個值的類型,例如:

注意: 有些小伙伴在演練場使用的時候,會提示錯誤信息,是因為JSX語法沖突,可以在編輯器中通過創(chuàng)建 tsxts 文件來練習(xí)。

let sayHi: any = "hello world";
let hiLength1: number = (<string>sayHi).length;

let hiLength2: number = (<number>sayHi).length; // error

sayHi是any類型,在使用時候?qū)⑵鋽嘌詾?string 類型,則不會有錯誤提示。然后當(dāng)我們斷言為 number ,則會有錯誤警告。

【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五),TypeScript實踐應(yīng)用,typescript,javascript,前端

繼續(xù)執(zhí)行接下來的操作。


let sayHi:string | number = 'good good';
let hiLength:number = (<string>sayHi).length;  //0

sayHi是string或者number的聯(lián)合類型,在使用時候?qū)⑵鋽嘌詾閟tring類型。

2.2 as形式

as類型斷言語法: 值a as 類型A 的語法進(jìn)行類型斷言,將 值a 斷言為 類型A.

例如:


let sayHi: string | number = 'good good';
let hiLength1: number = (sayHi as string).length;

let hiLength2: number = (sayHi as number).length;  // error

對于sayHi同樣的進(jìn)行斷言為string和number,結(jié)果和尖括號語法斷言一致。

使用斷言的優(yōu)勢是可以在編譯階段捕獲一些潛在的類型錯誤,從而提高代碼的可靠性。不過需要注意,過度使用斷言會導(dǎo)致代碼的可讀性和可維護(hù)性降低,因此需要謹(jǐn)慎使用

as形式 的斷言在實際開發(fā)中比較推薦。

三、其他斷言類型
3.1 非空斷言

TypeScript還有一個特殊的語法,用于在不進(jìn)行任何顯式檢查的情況下從類型中刪除 nullundefined。使用 ! 寫在需要斷言的表達(dá)式或者值之后:

function setName(name: string | null | undefined) : void {
    if (name.length) {
        console.log('name', name)
    }
}

【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五),TypeScript實踐應(yīng)用,typescript,javascript,前端

從編譯結(jié)果我們能夠看出,name可能為null或者undefined,我們進(jìn)行非空斷言處理,修改調(diào)用方式為 name!.length

function setName(name: string | null | undefined) : void {
    if (name!.length) {
        console.log('name', name)
    }
}

現(xiàn)在,在編譯時就不會報錯了。但是還是需要注意,當(dāng)在運行時,真正的傳入了null或者undefined時,則會出現(xiàn)異常。請務(wù)必注意。

3.2 確定賦值斷言

在開發(fā)中還有這樣一種情況, 就是我們在初始定義某一個變量的時候, 有可能是不賦值的,在后面的代碼或者函數(shù)內(nèi)對其進(jìn)行賦值, 然后再使用。

TypeScript允許在實例屬性或者變量聲明后面放置 ! 號,從而告訴 TypeScript 該屬性會被明確地賦值。

// 初始化的時候不進(jìn)行賦值
let n: number

// 通過調(diào)用這個函數(shù)對 n 進(jìn)行賦值操作
function init () { n = 100 }
init()

// 這里使用一下 n
console.log(n.toFixed(2))

【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五),TypeScript實踐應(yīng)用,typescript,javascript,前端

為了避免編譯出錯,我們可以在變量名后面加個!符號.

// 初始化的時候不進(jìn)行賦值
let n!: number

// 通過調(diào)用這個函數(shù)對 n 進(jìn)行賦值操作
function init () { n = 100 }
init()

// 這里使用一下 n
console.log(n.toFixed(2))

此時,再去執(zhí)行編譯,則不會出現(xiàn)定義前使用的錯誤提示了。

四、斷言使用需謹(jǐn)慎

需要注意的是,使用斷言雖然能避免編譯中的TypeScript的報錯,但是卻避免不了運行中實際真實的報錯,因此,除非你真的知道你在做什么,否則不需要輕易使用斷言。

如下面代碼:

type Score = number | string;

function updateScore(scoreValue:Score): string {
   return (scoreValue as string).toUpperCase()
}

updateScore(1)

可以看到在編輯器中并沒有報錯,但熟悉代碼的效果伴一眼就能看看出這是有問題的代碼。
打開控制臺或編輯器運行這段代碼,顯示出錯

【TypeScript】類型斷言-類型的聲明和轉(zhuǎn)換(五),TypeScript實踐應(yīng)用,typescript,javascript,前端

所以除非確切的知道變量的數(shù)據(jù)類型,否則不要輕易使用類型斷言,這是因為類型斷言會讓 TypeScript 編譯器 將變量當(dāng)做指定的類型,而不管它實際的類型,在程序?qū)嶋H運行時可能有JavaScript語法錯誤,因此使用斷言需要額外注意



以上就是【TypeScript】類型斷言的總結(jié),如果對你有幫助,請不要吝嗇你的小手給我狠狠的點贊、關(guān)注加分享。文章來源地址http://www.zghlxwxcb.cn/news/detail-644976.html



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

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

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

相關(guān)文章

  • TypeScript -類型斷言的簡單理解

    類型斷言 : 是手動的給某個變量 指定類型,從而可以方便操作該類型的屬性和方法。 方式一 : 變量名 as 類型 方式二 :類型 變量名 注意 : 1、類型斷言只是為了方便明確變量的類型,而不是將變量的類型進(jìn)行改變?。?! 2、因此,類型斷言在使用的時候,建議 在我們已

    2024年02月08日
    瀏覽(20)
  • TypeScript基礎(chǔ)知識:類型斷言

    ????????在 TypeScript 中,類型斷言是一種強(qiáng)制將一個值視為特定類型的方式。它允許開發(fā)人員在編譯時指定變量的類型,從而獲得更好的類型檢查和代碼提示。本文將深入探討 TypeScript 中的類型斷言,并提供豐富的示例代碼幫助讀者更好地理解和應(yīng)用這一特性。 ??????

    2024年01月25日
    瀏覽(24)
  • TypeScript 學(xué)習(xí)筆記(一):基本類型、交叉類型、聯(lián)合類型、類型斷言

    TypeScript 學(xué)習(xí)筆記(一):基本類型、交叉類型、聯(lián)合類型、類型斷言

    TS中實現(xiàn)對象屬性必選、對象屬性在開發(fā)過程中十分常見,前端在傳參數(shù)時,有些參數(shù)比必傳,有些是選傳,我們可以定一個多個對象來實現(xiàn)傳參,但是這讓代碼變得冗余。我們可以通過TS定義數(shù)據(jù)類型來實現(xiàn)。 TypeScript中文網(wǎng) 1. 數(shù)組 2. 布爾 3. 數(shù)值 當(dāng)我們給num賦值為123但沒有

    2024年02月15日
    瀏覽(24)
  • 【TypeScript】TS類型聲明(二)

    【TypeScript】TS類型聲明(二)

    ??個人主頁: 不叫貓先生 ???♂?作者簡介:前端領(lǐng)域新星創(chuàng)作者、華為云享專家、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進(jìn)步,一起加油呀! ??系列專欄:vue3從入門到精通、TypeScript從入門到實踐 ??個人簽名:不破不立 TypeScript從入門到實踐專欄 是博

    2024年01月20日
    瀏覽(25)
  • typeScript中的類型斷言和類型別名、字符串字面量類型

    目錄 1.類型斷言 語法 ?2.類型斷言的用途 2.1?將一個聯(lián)合類型斷言為其中一個類型? ?2.2 將一個父類斷言為更加具體的子類 ?2.3?將任何一個類型斷言為?any 2.4?將?any?斷言為一個具體的類型 類型斷言的限制 雙重斷言 類型斷言 vs 類型轉(zhuǎn)換 類型斷言 vs 類型聲明 類型斷言 vs

    2024年02月04日
    瀏覽(19)
  • TypeScript中的類型聲明declare

    在 TypeScript 中, declare 用于定義 全局 變量、函數(shù)和類型等 ,提供了一種在編譯過程中告訴TypeScript編譯器某個標(biāo)識符的類型的方式。它告訴編譯器:雖然它在當(dāng)前文件中沒有聲明,但它在其他地方已經(jīng)存在了。也就是說,declare讓 編譯器 知道 這些聲明的實體是在編譯

    2024年02月12日
    瀏覽(15)
  • TypeScript 中的常用類型聲明大全

    TypeScript 中的常用類型聲明大全

    上一章節(jié),我們介紹了什么是TS,以及TS的應(yīng)用場景。本章節(jié)將給大家介紹,在TypeScript 中,常用的數(shù)據(jù)類型聲明,有我們熟悉的 基本數(shù)據(jù)類型,也有,一些TypeScript 新增的一些,語法規(guī)范類型。出發(fā)吧… 函數(shù):同樣的,也可以給函數(shù)限制 接受形參的類型和,限制返回值的數(shù)

    2024年02月16日
    瀏覽(16)
  • 前端TypeScript學(xué)習(xí)day05-索引簽名、映射與類型聲明文件

    前端TypeScript學(xué)習(xí)day05-索引簽名、映射與類型聲明文件

    (創(chuàng)作不易,感謝有你,你的支持,就是我前行的最大動力,如果看完對你有幫助,請留下您的足跡) ? ? ? ? ?? ? 目錄 索引簽名類型? 映射類型 索引查詢(訪問)類型 基本使用? 同時查詢多個索引的類型? TypeScript 類型聲明文件? 概述 TS 的兩種文件類型? 類型聲明文件的

    2024年02月08日
    瀏覽(22)
  • TypeScript入門指南:特性、安裝配置、類型聲明、編譯選項、面向?qū)ο蟮仍斀? decoding=
  • 【TypeScript】TS中type和interface在類型聲明時的區(qū)別

    【TypeScript】TS中type和interface在類型聲明時的區(qū)別

    ?? 個人主頁: 不叫貓先生 ???♂? 作者簡介:2022年度博客之星前端領(lǐng)域TOP 2,前端領(lǐng)域優(yōu)質(zhì)作者、阿里云專家博主,專注于前端各領(lǐng)域技術(shù),共同學(xué)習(xí)共同進(jìn)步,一起加油呀! ??優(yōu)質(zhì)專欄: vue3+vite+typeScript從入門到實踐 ?? 資料領(lǐng)?。呵岸诉M(jìn)階資料可以找我免費領(lǐng)取 ??

    2023年04月26日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包