[英]Defining an object with any prop in typescript
我剛剛從 JavaScript 切換到 TypeScript,並且正在轉換我的一堆代碼。
我曾經在 JavaScript 中經常使用此代碼(已轉換為 TypeScript):
function isObject (payload: any): payload is object {
const type: string = Object.prototype.toString.call(payload).slice(8, -1)
return type === 'Object'
}
然后我會在 JavaScript 中做這樣的事情
if (isObject(payload) && payload.id) return payload.id
但是在 TypeScript 中,現在它會給我一個錯誤,即id
在object
上不存在。
因此,不是在我的isObject
函數中返回payload is object
,我認為我應該返回具有任何屬性和任何值的對象。
我怎樣才能做到最好?
您可以使用它定義指數的簽名,雖然我不知道你會從中得到了什么好處any
因為你可以索引,它與任何財產,它不appeat是更多的類型安全的那么任何。
function isObject (payload: any): payload is { [name: string]: any} {
return typeof payload === 'object'; // this should work just the same
}
let payload: any;
if (isObject(payload) && payload.id) payload.id
也許如果您要開始使用嚴格的空檢查,一個好處可能是您可以從結果類型中刪除undefined
:
function isObject (payload: any): payload is { [name: string]: object | number | string | boolean | undefined} {
return typeof payload === 'object'
}
let payload: any;
if (isObject(payload) && payload.id) payload.id // payload.id is string | number | true | object here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.