我定义了这种类型:
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)
}
}
]
你会怎么做打字稿?
答案 0 :(得分:3)
type Action = { payload: PayloadTypes, [key: string]: any }
type ActionsList = Action[]
这是一种非常好的方式来逐步输入对象,因为您可以更好地理解它们所需的结构。您键入的任何命名/已定义的params将具有指定的类型,其他任何内容将具有any
。请记住,不会检查未知对象属性。因此,如果Action
只能有type
,text
,payload
和meta
action["somethingElse"] = 1
鉴于上述定义,完全有效。