Closed
Description
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;
}