第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Typescript 返回類型(布爾值、'is' 與 <nothing>)差異?

Typescript 返回類型(布爾值、'is' 與 <nothing>)差異?

喵喔喔 2023-10-14 10:06:25
需要一些幫助來(lái)理解它。功能有什么區(qū)別foo(type:?any):?type?is?number和:foo(type:?any):?boolean和:foo(type:?any)?謝謝
查看完整描述

2 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

當(dāng)你這樣做時(shí)


foo(type: any)

這只是一個(gè)簡(jiǎn)單的函數(shù)定義。如果可以的話,TS 將推斷返回值的類型。


foo(type: any): boolean

是一個(gè)函數(shù)定義,添加了返回值foo應(yīng)該是布爾值的斷言。(如果 TS 推斷返回值不是布爾值,則會(huì)拋出錯(cuò)誤。通常,這是沒(méi)有必要的。)


foo(type: any): type is number 

和上面兩個(gè)完全不同。它允許調(diào)用者縮小傳遞foo表達(dá)式的類型。這稱為類型保護(hù)。例如,對(duì)于最后一個(gè)實(shí)現(xiàn),您可以執(zhí)行以下操作:


const something = await apiCall();

// something is unknown

if (foo(something)) {

  // TS can now infer that `something` is a number

  // so you can call number methods on it

  console.log(something.toFixed(2));

} else {

  // TS has inferred that `something` is not a number

}

您只能使用某種: type is number語(yǔ)法來(lái)執(zhí)行上述操作 - 其他兩個(gè)定義foo不允許調(diào)用者縮小范圍。


查看完整回答
反對(duì) 回復(fù) 2023-10-14
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

這意味著您的函數(shù)需要布爾值作為參數(shù):


function foo(arg: boolean){

  if(typeof arg != 'boolean'){

    Throw 'type error'

  } else {

    return arg

  }

}

這意味著您的函數(shù)將返回一個(gè)布爾值:


function foo(): boolean {

  return true;

}


let value: string;


value = foo();


//Type Error, variable value (type 'string') not assignable to type 'boolean'


查看完整回答
反對(duì) 回復(fù) 2023-10-14
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)