簡體   English   中英

使用打字稿中的任何道具定義對象

[英]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 中,現在它會給我一個錯誤,即idobject上不存在。

因此,不是在我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM