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

TypeScript中類型縮小的方式

 更新時間:2026年05月14日 09:42:13   作者:Eersan-2023.3.12  
本文探討了TypeScript中用于提升代碼安全性的類型縮小技術(shù),包括類型斷言通過as或<>,使用instanceof檢查對象實例,in關(guān)鍵字驗證對象屬性,以及自定義類型保護(hù)函數(shù)進(jìn)行更復(fù)雜的類型檢查,感興趣的可以了解一下

TypeScript是一種靜態(tài)類型檢查的編程語言,它通過讓開發(fā)者在代碼中去定義變量、函數(shù)、接口以及類等等的類型,從而幫助開發(fā)者減少代碼中的錯誤。TypeScript類型系統(tǒng)中有一些非常強大的功能,其中一個非常重要的概念是類型縮小(Type Narrowing)。在本篇技術(shù)博客中,我們將探討TypeScript中類型縮小的幾種方式。

1.類型斷言(Type Assertion)

類型斷言是TypeScript中最常用的類型縮小技術(shù)之一。當(dāng)開發(fā)者對一個變量進(jìn)行類型斷言時,就是在告訴TypeScript編譯器,這個變量的類型是我們所指定的類型。在對變量進(jìn)行類型斷言時,我們可以使用"as"關(guān)鍵字或者"<>"符號。例如:

const myVariable: unknown = "hello world";

if(typeof myVariable === "string"){
  const myString: string = myVariable as string;
  console.log(myString.toUpperCase());
}

2.instanceof關(guān)鍵字

TypeScript中的 instanceof關(guān)鍵字可以用來檢查對象是不是屬于某個類的實例,這也是一種類型縮小的方式。例如:

class MyPerson {
    firstName: string;
    lastName: string;
}

const myObject: any = new MyPerson();
if(myObject instanceof MyPerson) {
    console.log(myObject.firstName);
}

在這個例子中,我們用instanceof關(guān)鍵字判斷myObject是不是MyPerson類的一個實例,這樣我們就能夠僅僅在if語句塊中使用MyPerson類中的firstName屬性了。

3.in關(guān)鍵字

in關(guān)鍵字用來檢查一個屬性是否屬于一個對象,如果這個條件為true,TypeScript就會默認(rèn)這個變量的類型是我們指定的類型。例如:

type Student = {
    name: string;
    major: string;
    gpa: number;
}

function printStudentInfo(student: Student, key: string) {
    if (key in student) {
        console.log(student[key]);
    }
}

在這個例子中,我們使用了in關(guān)鍵字去檢測傳遞進(jìn)來的key是否屬于student對象的屬性,并且默認(rèn)這個變量的類型為string。

4.自定義類型保護(hù)函數(shù)

除了上述基本的類型縮小方式之外,TypeScript還允許開發(fā)者自定義類型保護(hù)函數(shù)來進(jìn)行類型縮小。類型保護(hù)函數(shù)是指一個函數(shù),它發(fā)揮的作用是在運行時檢查一個變量是否屬于某個特定類型,并且返回一個布爾值。例如:

interface Animal {
    name: string;
}

interface Dog extends Animal {
    breed: string;
}

function isDog(animal: Animal): animal is Dog {
    return (animal as Dog).breed !== undefined;
}

function bark(animal: Animal) {
    if(isDog(animal)){
        console.log((animal as Dog).name + " barks!");
    } else {
        console.log(animal.name + " doesn't bark!");
    }
}

const myAnimal1: Animal = { name: "Bob" };
const myAnimal2: Dog = { name: "Max", breed: "Beagle" };

bark(myAnimal1);    // "Bob doesn't bark!"
bark(myAnimal2);    // "Max barks!"

這個例子中我們定義了一個isDog的函數(shù),它用來檢查傳遞進(jìn)來的變量是否屬于Dog類型。注意到isDog函數(shù)的返回值為animal is Dog,這是一種類型謂詞,表示函數(shù)會將傳遞進(jìn)來的變量作為Dog類型來處理。

總結(jié)

本篇技術(shù)博客介紹了TypeScript中類型縮小的幾種方式,包括類型斷言、instanceof關(guān)鍵字、in關(guān)鍵字以及自定義類型保護(hù)函數(shù)。每種類型縮小技術(shù)都有其應(yīng)用場景和優(yōu)勢,在編寫TypeScript代碼時,開發(fā)者可以選擇最合適的方式來進(jìn)行類型縮小,從而讓代碼更加健壯和安全。

到此這篇關(guān)于TypeScript中類型縮小的方式的文章就介紹到這了,更多相關(guān)TypeScript 類型縮小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS實現(xiàn)的tab切換并顯示相應(yīng)內(nèi)容模塊功能示例

    JS實現(xiàn)的tab切換并顯示相應(yīng)內(nèi)容模塊功能示例

    這篇文章主要介紹了JS實現(xiàn)的tab切換并顯示相應(yīng)內(nèi)容模塊功能,結(jié)合實例形式分析了JavaScript基于事件響應(yīng)、元素遍歷實現(xiàn)頁面tab切換功能相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • JS?try?catch用法舉例之異常處理

    JS?try?catch用法舉例之異常處理

    JavaScript try…catch是我們使用的功能之一,作為Web前端工程師,JavaScript try…catch是我們使用的功能之一,這篇文章主要給大家介紹了關(guān)于JS?try?catch用法舉例之異常處理的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • JS獲取瀏覽器地址欄的多個參數(shù)值的任意值實例代碼

    JS獲取瀏覽器地址欄的多個參數(shù)值的任意值實例代碼

    本文通過實例代碼給大家介紹了JS獲取瀏覽器地址欄的多個參數(shù)值的任意值,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的的朋友參考下吧
    2018-07-07
  • Bootstrap按鈕功能之查詢按鈕和重置按鈕

    Bootstrap按鈕功能之查詢按鈕和重置按鈕

    一般情況下,查詢列表有查詢條件、查詢按鈕和重置按鈕,輸入查詢條件,點擊查詢按鈕查詢列表等數(shù)據(jù);點擊重置按鈕會將查詢條件恢復(fù)到原始狀態(tài)。接下來通過本文給大家介紹bootstrap實現(xiàn)查詢按鈕和重置按鈕的方法,一起看看吧
    2016-10-10
  • js字符串截取函數(shù)substr substring slice使用對比

    js字符串截取函數(shù)substr substring slice使用對比

    字符串截取函數(shù)有substr、substring以及slice等等,下面將為大家介紹下各自的使用,感興趣的朋友可以了解下
    2013-11-11
  • javascript常用函數(shù)(2)

    javascript常用函數(shù)(2)

    這篇文章主要介紹了javascript常用函數(shù),再來15個常用函數(shù),都具有很高的實用性,感興趣的小伙伴們可以參考一下
    2015-11-11
  • JS實現(xiàn)的tab頁切換效果完整示例

    JS實現(xiàn)的tab頁切換效果完整示例

    這篇文章主要介紹了JS實現(xiàn)的tab頁切換效果,涉及javascript基于事件響應(yīng)動態(tài)操作頁面元素屬性相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • nullJavascript中創(chuàng)建對象的五種方法實例

    nullJavascript中創(chuàng)建對象的五種方法實例

    今天上午,非常郁悶,有很多簡單基礎(chǔ)的問題搞得我有些迷茫,哎,代碼幾天不寫就忘。目前又不當(dāng)COO,還是得用心記代碼哦!
    2013-05-05
  • js實現(xiàn)簡單的打印表格

    js實現(xiàn)簡單的打印表格

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)簡單的打印表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • js給onclick賦值傳參數(shù)的兩種方法

    js給onclick賦值傳參數(shù)的兩種方法

    這篇文章主要介紹了js給onclick賦值傳參數(shù)的兩種方法,有需要的朋友可以參考一下
    2013-11-11

最新評論

永登县| 博白县| 鄯善县| 台南县| 大邑县| 泰州市| 仪陇县| 朝阳县| 哈密市| 昭通市| 长寿区| 安仁县| 厦门市| 集贤县| 措勤县| 新巴尔虎右旗| 彰武县| 潜山县| 普陀区| 新沂市| 凌海市| 历史| 磐石市| 巴彦县| 沛县| 武川县| 鞍山市| 绥阳县| 临沧市| 昌都县| 炉霍县| 腾冲县| 龙井市| 静安区| 嘉黎县| 六枝特区| 津南区| 会同县| 临夏县| 大埔县| 湟中县|