
Typescript ques:An index signature parameter type cannot be a union type. Consider using a mapped...
写接口类型时,希望一个类型的键值是联合类型中固定的几个
const enum MSGTYPE{ TEXT = 'text', IMAGE = 'image', } // or // type MSGTYPE = 'text' | 'image'; export interface QywxSendMessage = { msg_id: number; msg_name: string; [key: MSGTYPE]: number; }显然会报错An index signature parameter type cannot be a union type. Consider using a mapped object type instead. ts(1337)
问题及解决方式呢: github/microsoft/Typescript/issues/33440 github/Microsoft/TypeScript/issues/24220 github/Microsoft/TypeScript/issues/2491
export interface QywxSendMessage = { msg_id: number; msg_name: string; [key in MSGTYPE]: number; }写接口类型时,希望一个类型的键值是联合类型中固定的几个中的一个
type MSGTYPE = 'text' | 'image'; export interface QywxSendMessage = { msg_id: number; msg_name: string; [key: MSGTYPE]: number; // [key: 'text' | 'image']: number; }显然也会报错An index signature parameter type cannot be a union type. Consider using a mapped object type instead. ts(1337)
那该如何表示呢?如果用?那显然是有问题的
type MSGTYPE<T> = {'text': T } | {'image':T }; export interface QywxSendMessageParams = { msg_id: number; msg_name: string; } export type QywxSendMessage = QywxSendMessageParams & MSGTYPE<number>;👁️ 阅读量:0
© 版权声明:本文《Typescript ques:An index signature parameter type cannot be a union type. Consider using a mapped...》内容均为本站精心整理或网友自愿分享,如需转载请注明原文出处:https://www.zastudy.cn/wen/1686550093a289252.html。