minigame-api-typings
minigame-api-typings copied to clipboard
能否将订阅消息的状态定义为字面量枚举
现在是定义为string 希望定义为 "accept" | "reject" | "ban" | "filter"
interface RequestSubscribeMessageSuccessCallbackResult {
/** [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'、'filter'。'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'filter'表示该模板因为模板标题同名被后台过滤。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息 */
[TEMPLATE_ID: string]: string,
/** 接口调用成功时errMsg值为'requestSubscribeMessage:ok' */
errMsg: string
}
建议定义为
interface RequestSubscribeMessageSuccessCallbackResult {
/** [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'、'filter'。'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁,'filter'表示该模板因为模板标题同名被后台过滤。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"} 表示用户同意订阅zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE这条消息 */
[TEMPLATE_ID: string]: "accept" | "reject" | "ban" | "filter"
/** 接口调用成功时errMsg值为'requestSubscribeMessage:ok' */
errMsg: string
}
包括 wx.getSetting 接口里的定义也是
有个问题是,这个定义方式其实并不被 TS 接受:
interface RequestSubscribeMessageSuccessCallbackResult {
[TEMPLATE_ID: string]: 'accept' | 'reject' | 'ban' | 'filter'
errMsg: string
// ^
// Property 'errMsg' of type 'string' is not assignable to 'string' index type '"accept" | "reject" | "ban" | "filter"'. ts(2411)
}
或许可以用 { [id: string]: 'a' } & { errMsg: string } 来回避,但处理起来会复杂一些