TypeScript .d.ts中如何提示Map回调函数入参btn类型为MessageComponent?
实现方案
你只需要把声明里泛用的Function类型替换为显式的函数类型签名即可,TypeScript会自动给使用者做对应的参数类型提示:
// 请确保你当前的声明文件中已经正确引入或声明了依赖类型:MessageMenuOption、MessageEmbed、MessageComponent declare class Page { constructor(name: string, content: MessageEmbed, buttons: Map<MessageMenuOption, string | ((btn: MessageComponent) => void)>, index: number) name: string content: MessageEmbed buttons: Map<MessageMenuOption, string | ((btn: MessageComponent) => void)> }
效果说明
- 使用者给Map传入函数类型的取值时,编辑器会自动提示函数的第一个入参
btn的类型为MessageComponent,如果使用者写错入参类型、或者调用btn不存在的属性/方法,都会触发类型校验报错。 - 如果你的业务场景中允许函数返回异步结果,可以自行调整函数签名的返回值,例如改成
(btn: MessageComponent) => Promise<void> | void适配异步场景。
内容的提问来源于stack exchange,提问作者kalempster
相关产品推荐
相关产品推荐

