日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

typescript设置默认值_TypeScript 中神奇的 this 类型声明

發布時間:2025/3/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 typescript设置默认值_TypeScript 中神奇的 this 类型声明 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建了一個“重學TypeScript”的微信群,想加群的小伙伴,加我微信"semlinker",備注重學TS喲

從 TypeScript 2.0 開始,在函數和方法中我們可以聲明 this 的類型,實際使用起來也很簡單,比如:

function sayHello(this: void) {
// this: void:表示在函數體內不允許使用this
}

在上面的 sayHello 函數中,this 參數是偽參數,它位于函數參數列表的第一位。為什么說 this 參數是偽參數呢?因為以上的 sayHello 函數經過編譯后,并不會生成實際的參數,該函數編譯成 ES5 后的代碼如下:

function sayHello() {
// this: void:表示在函數體內不允許使用this
}

那么在實際開發中,this 參數有什么用呢?下面我們來詳細介紹一下 this 參數的一些應用場景。

一、未使用 this 參數

class Rectangle {
private w: number;
private h: number;

constructor(w: number, h: number) {
this.w = w;
this.h = h;
}

getArea() {
return () => {
return this.w * this.h;
};
}
}

以上代碼中,我們定義了一個 Rectangle 長方形類,該類中包含了兩個私有的 w 和 h 屬性,分別表示長方形的寬度和高度,此外還有一個 getArea 方法用于獲取長方形的面積。在 getArea 方法中我們沒有使用 this 參數,此時 this 的類型是 this,如下圖所示:

without-this-param

二、使用 this 參數

class Rectangle {
private w: number;
private h: number;

constructor(w: number, h: number) {
this.w = w;
this.h = h;
}

getArea(this: Rectangle) {
return () => {
return this.w * this.h;
};
}
}

與前面定義的 Rectangle 長方形類不同,在 getArea 方法中,我們使用了 this 參數,之后 this 的類型是 Rectangle 類型,如下圖所示:

with-this-param

在 Rectangle 長方形類 getArea 方法中的 this 入參只是作為一個形式上的參數,供 TypeScript 做靜態檢查時使用,編譯后并不會生成實際的入參。

三、禁止使用 this

有些時候,我們希望在方法中,禁止用戶使用 this。針對這種需求,你可以設置 this 參數的類型為 void:

class Rectangle {
private w: number;
private h: number;

constructor(w: number, h: number) {
this.w = w;
this.h = h;
}

getArea(this: void) {
return () => {
return this.w * this.h;
};
}
}

以上代碼會提示以下異常:

Property 'w' does not exist on type 'void'.
Property 'h' does not exist on type 'void'.

四、回調函數中 this

前端開發者日常經常需要跟回調函數打交道,比如在頁面中監聽用戶的點擊事件,然后執行對應的處理函數,具體示例如下:

const button = document.querySelector("button");
// ?. -> TS 3.7引入的可選鏈
button?.addEventListener("click", handleClick);

function handleClick() {
console.log("Clicked!");
// 'this' implicitly has type 'any' because it does not have a type annotation.
this.removeEventListener("click", handleClick);
}

對于以上代碼,TypeScript 編譯器會有以下錯誤提示:this 隱式具有 any 類型,這是因為它沒有類型注解。為了解決這個問題,我們就可以顯式指定 this 參數的類型:

const button = document.querySelector("button");
button?.addEventListener("click", handleClick);

function handleClick(this: HTMLElement) {
console.log("Clicked!");
this.removeEventListener("click", handleClick);
}

除此之外,TypeScript 2.0 還增加了一個新的編譯選項:--noImplicitThis,表示當 this 表達式值為 any 類型的時候,生成一個錯誤信息。

五、參考資源

  • function-this-parameter
  • typescriptlang - typescript-2-0

▼往期精彩回顧▼在 TS 中如何實現類型保護?類型謂詞了解一下在 TS 中你踩過默認值的坑么?給 ?? 運算符把坑填了!看到 TypeScript 泛型就頭暈?給這是我開的方子!用上這幾招,輕松實現 TS 類型提取TS 中的可辨識聯合有啥用?請聽我細細道來!是時候表演真正的技術了 - TS 分身之術

TypeScript never 類型

TypeScript 設計模式之適配器模式

在前端 Word 還能這樣玩

總結

以上是生活随笔為你收集整理的typescript设置默认值_TypeScript 中神奇的 this 类型声明的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品69 | 亚洲在线观看免费视频 | 涩涩网站入口 | 黑人巨大猛烈捣出白浆 | 久久女人| 日韩精品免费视频 | 亚洲综合婷婷久久 | 成人免费毛片男人用品 | 一级丰满大乳hd高清 | 秋霞午夜鲁丝一区二区老狼 | 亚洲成人中文字幕在线 | 日韩免费高清一区二区 | 日本亚洲视频 | 一本色道久久综合亚洲二区三区 | 欧美性生活一区二区三区 | 成人公开免费视频 | 国产精品无码久久久久高潮 | 在线成人毛片 | 亚洲无人区码一码二码三码的含义 | 51成人精品网站 | 国产精品大片 | 草久免费视频 | 嫩草免费视频 | 最好看的中文字幕国语电影mv | 99视频免费在线观看 | 美女网站在线 | 亚洲第一视频 | 成人观看视频 | 毛片网站在线免费观看 | 日美毛片 | 少妇一级视频 | 久久精品人妻av一区二区三区 | 国产成人无码精品久久久性色 | 亚洲专区在线视频 | 男同互操gay射视频在线看 | 看黄免费网站 | 亚洲综合视频网站 | 爱的天堂 | 亚洲视频高清 | 少妇扒开粉嫩小泬视频 | 日本特黄特黄刺激大片 | 国产精品成人免费视频 | www.日韩 | 日韩黄色一区二区 | 欧美成人精品激情在线观看 | 亚洲欧美日韩偷拍 | 成年人精品 | 亚洲视频二 | 色牛影院| 亚洲最新在线观看 | 免费裸体美女网站 | 成人动漫在线观看视频 | 欧美成人片在线 | 久久夜精| 99少妇| 饥渴放荡受np公车奶牛 | 国产福利91精品 | 你懂的在线网站 | 韩国一区二区在线播放 | 97se综合| 绝顶高潮合集videos | 老司机深夜福利视频 | 国产手机看片 | 国产卡一卡二 | www.97ai.com| 日韩国产精品一区二区 | 亚洲精品资源 | 亚洲最黄视频 | 成在人线av | 精品亚洲aⅴ无码一区二区三区 | 久久国产加勒比精品无码 | 日韩精品免费一区二区三区 | 免费看美女被靠到爽的视频 | 久久精品国产99国产精品 | 亚洲专区在线视频 | 国偷自产av一区二区三区麻豆 | 日韩精品免费在线视频 | 18禁裸男晨勃露j毛免费观看 | 456亚洲影院 | 免费看毛片网站 | av老司机福利 | 久久久久久国产精品日本 | 一区二区视频在线观看 | 亚洲午夜在线视频 | 黑人巨大精品欧美一区二区免费 | 国产人妖ts重口系列网站观看 | 久久国产乱子伦免费精品 | 情欲少妇人妻100篇 黄色一级片欧美 | 国产亚洲精品美女 | 色干干| 欧美日韩亚洲高清 | 毛片大片 | 欧美人与禽zozzo性之恋的特点 | 成人在线一区二区 | 欧美激情五月 | 免费日韩一区二区 | 日韩欧美一二三四区 | 精品二区在线观看 | 乱人伦av |