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

TypeScript is 關(guān)鍵字

本節(jié)介紹 TypeScript 中的 is 關(guān)鍵字,它被稱為類(lèi)型謂詞,用來(lái)判斷一個(gè)變量屬于某個(gè)接口或類(lèi)型。如果需要封裝一個(gè)類(lèi)型判斷函數(shù),你應(yīng)該第一時(shí)間想到它,本節(jié)列出了一些常用的類(lèi)型判斷函數(shù)以供參考。

1. 慕課解釋

is 關(guān)鍵字一般用于函數(shù)返回值類(lèi)型中,判斷參數(shù)是否屬于某一類(lèi)型,并根據(jù)結(jié)果返回對(duì)應(yīng)的布爾類(lèi)型。

語(yǔ)法:prop is type

2. 舉例說(shuō)明

在一些兌換碼場(chǎng)景,經(jīng)常會(huì)需要將兌換碼全部轉(zhuǎn)為大寫(xiě),之后再進(jìn)行判斷:

function isString(s: unknown): boolean {
  return typeof s === 'string'
}

function toUpperCase(x: unknown) {
  if(isString(x)) {
    x.toUpperCase() // Error, Object is of type 'unknown'
  }
}

代碼解釋:

第 7 行,可以看到 TypeScript 拋出了一個(gè)錯(cuò)誤提示,一個(gè) unknown 類(lèi)型的對(duì)象不能進(jìn)行 toUpperCase() 操作,可是在上一行明明已經(jīng)通過(guò) isString() 函數(shù)確認(rèn)參數(shù) x 為 string 類(lèi)型,但是由于函數(shù)嵌套 TypeScript 不能進(jìn)行正確的類(lèi)型判斷。

這時(shí),就可以使用 is 關(guān)鍵字:

const isString = (s: unknown): s is string => typeof val === 'string'

function toUpperCase(x: unknown) {
  if(isString(x)) {
    x.toUpperCase()
  }
}

解釋: 通過(guò) is 關(guān)鍵字將類(lèi)型范圍縮小為 string 類(lèi)型,這也是一種代碼健壯性的約束規(guī)范。

3. 一些拓展函數(shù)

下面是一些常用的類(lèi)型判斷函數(shù):

const isNumber = (val: unknown): val is number => typeof val === 'number'
const isString = (val: unknown): val is string => typeof val === 'string'
const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol'
const isFunction = (val: unknown): val is Function => typeof val === 'function'
const isObject = (val: unknown): val is Record<any, any> => val !== null && typeof val === 'object'

function isPromise<T = any>(val: unknown): val is Promise<T> {
  return isObject(val) && isFunction(val.then) && isFunction(val.catch)
}

const objectToString = Object.prototype.toString
const toTypeString = (value: unknown): string => objectToString.call(value)
const isPlainObject = (val: unknown): val is object => toTypeString(val) === '[object Object]'

4. 小結(jié)

is 關(guān)鍵字經(jīng)常用來(lái)封裝"類(lèi)型判斷函數(shù)",通過(guò)和函數(shù)返回值的比較,從而縮小參數(shù)的類(lèi)型范圍,所以類(lèi)型謂詞 is 也是一種類(lèi)型保護(hù)。