interface Animal {
name: string;
kind: string;
age: number;
location: string;
owner: object;
}
function clonePet(pet: Animal, fullCopy?: boolean) {
return {
name: pet.name,
kind: pet.kind,
...(fullCopy && pet),
}
}
Expected: clonePet returns type { name: string, kind: string, age?: number, location?: string, owner?: object }
Actual: clonePet returns the following type:
{
name: string;
kind: string;
} | {
name: string;
kind: string;
} | {
name: string;
kind: string;
age: number;
location: string;
owner: object;
}
Expected:
clonePetreturns type{ name: string, kind: string, age?: number, location?: string, owner?: object }Actual:
clonePetreturns the following type: