如何在打字稿中的对象中为键添加类型?

时间:2018-04-12 21:12:09

标签: typescript typescript-typings

我定义了这种类型:

type PayloadTypes =
  | "VIEW_OFFER_DETAILS"
  | "ADD_TO_CART"
  | "MORE_INFO_ITEM"
  | "SHOW_ITEM_LOCATION";

我有一个有几个键的对象但是我不想定义对象中的每个键,我只想要定义payload

actions: [
  {
    type: "postback",
    text: "View details",
    payload: "VIEW_OFFER_DETAILS", // <- this one
    metadata: {
      userId,
      offer: JSON.stringify(offer)
    }
  }
]

你会怎么做打字稿?

1 个答案:

答案 0 :(得分:3)

type Action = { payload: PayloadTypes, [key: string]: any }
type ActionsList = Action[]

这是一种非常好的方式来逐步输入对象,因为您可以更好地理解它们所需的结构。您键入的任何命名/已定义的params将具有指定的类型,其他任何内容将具有any。请记住,不会检查未知对象属性。因此,如果Action只能有typetextpayloadmeta

action["somethingElse"] = 1
鉴于上述定义,

完全有效。