亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Typescript 語法說明

Typescript 語法說明

侃侃爾雅 2023-06-09 10:39:16
我正在閱讀用 Typescript 編寫的代碼。我不確定我是否理解正確:export class MyClass<B> {  value: B;  constructor(value: B) {    this.value = value;  }  isMyClass(): this is MyClass<B> {    return true;  }}代表什么<B>?它代表什么,類型?如果是這樣,它是什么類型?this is MyClass<B>里面有什么isMyClass(): this is MyClass<B>?它被評估為真還是假?為什么不把它放在函數本身里面呢,像這樣:  isMyClass() {    if (this is MyClass) {      return true;    }    else {      return false;    }      }我無法找到這些問題的答案。
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

代表什么<B>?它代表什么,類型?如果是這樣,它是什么類型?

這是一個類型參數,也稱為泛型。

在 C# 和 Java 等語言中,用于創建可重用組件的工具箱中的主要工具之一是泛型,也就是說,能夠創建一個可以處理多種類型而不是單一類型的組件。這允許用戶使用這些組件并使用他們自己的類型。

每當調用一個函數或創建一個實例時,如果該函數或類是通用的,您可以將類型參數“傳遞”給它,類似于將參數傳遞給函數或構造函數的方式。(不同之處在于類型參數是一個type,在發出的 JS 中不存在——它只是用來幫助 TS 類型檢查)。

如果是這樣,它是什么類型?

它是調用構造函數參數的任何類型。

const?m?=?new?MyClass(3);

將導致

constructor(value:?B)

其中valueis?3,告訴 TypeScript 結果實例是 a?MyClass<number>- 換句話說,它的value屬性包含 a?number, a?B

this is MyClass<B>里面有什么isMyClass(): this is MyClass<B>?它被評估為真還是假?為什么不把它放在函數本身里面呢,像這樣:

isMyClass():?this?is?MyClass<B>?{

是類型守衛。如果該方法返回true,它會告訴 TypeScript 該實例的類型MyClass<B>。

雖然你可以這樣做:

?isMyClass() {

? ? if (this instanceof MyClass) {

? ? ? return true;

? ? }

? ? else {

? ? ? return false;

? ? }? ??

? }

這將不允許 TypeScript 理解在isMyClass調用時類型已經縮??;它只會返回一個布爾值。相反,使用is將返回一個布爾值并提供有關調用內容的 TypeScript 類型信息。


查看完整回答
反對 回復 2023-06-09
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號