const isType = <T>(type: string) => (obj: unknown): obj is T => toString.call(obj) === `[object ${type}]`
我知道這是一個判斷型別的功能,但是它使用了很多箭頭,我不明白每個階段的箭頭是什么意思
const isType = <T>(type: string) => (obj: unknown): obj is T
第一部分表示函式接受引數,回傳型別判斷的布林值
=> toString.call(obj) === `[object ${type}]`
后半部分是什么意思
uj5u.com熱心網友回復:
考慮這個簡化的例子:
function isType<T,>(type: string) {
return function (obj: unknown): obj is T {
return toString.call(obj) === `[object ${type}]`
}
}
const foo = isType('hello')([])
isType是一個<T>(type: string) =>回傳另一個函式的函式 (obj: unknown): obj is T。這另一個功能是打字稿自定義型別保護
但是,toString它本身不是型別保護,因此,我不確定這個部分函式/型別保護是否有用
uj5u.com熱心網友回復:
試一試吧。首先,我認為這并沒有做應該做的事情。
該函式正在回傳另一個函式,它將充當型別保護。這意味著 TS 可以使用它來縮小型別。
您可以將其視為isType工廠功能。您需要撥打 2 次電話才能使其真正起作用
- 一個得到一個型別警衛
- 實際呼叫型別保護
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496454.html
