sobrecarga de função
Eu escrevi as 2 interfaces. Também escrevi 3 funções de sobrecarga. E eu tenho implementação de funções. E aqui um erro – Esta assinatura de sobrecarga não é compatível com sua assinatura de implementação
interface MyPosition {
x: number | undefined
y: number | undefined
}
interface MyPositionWithDefault extends MyPosition {
default: string
}
function position(): MyPosition
function position(a: number): MyPositionWithDefault // Here`s an
//error
function position(a: number, b: number): MyPosition
function position(a?: number, b?: number) {
if (!a && !b) {
return {x: undefined, u: undefined}
}
if (a && !b) {
return {x: a, y: undefined, default: a.toString}
}
return {x: a, y: b}
}
O compilador, por algum motivo, não pode inferir o tipo de retorno correto; simplesmente adicionar a anotação corrige o problema:
Parque infantil
Também limpei alguns erros de digitação.
0
parecer!a
errados, use o estreitamento de tipo.as MyPositionWithDefault
, fica mais claro onde esse tipo é retornado.MyPosition
uma vez, não há necessidade de!a && !b
Parque infantil