function getMessage(value: number, myName: string): Message | undefined
function getMessage(value: messageType, readRecordCount: number): Message[]
function getMessage(value: any, readRecordCount: number = 1, myName: string = "2"): Message | Message[] | undefined {
console.log(myName);
if (typeof value === "number") {
return messages.find(item => item.id === value)
} else {
return messages.filter(item => item.type === value).splice(0, readRecordCount)
}
}
这里的第一个 getMessage
重载签名为什么与实现签名不兼容 我已经给值并且赋值初始值了
因为 TypeScript 是按照参数的序号来确定参数的,或者说这些参数都不是命名参数。
你的第一个重载里面,
myName
是第二个参数,对应的是函数实现的readRecordCount
,所以实际上readRecordCount
的类型应当为string|number
,后面那个参数则是多余的。如果你要在 TS/JS 中使用命名参数的话,可以使用对象来传参: