TypeScript/tests/cases/compiler/narrowingConstrainedTypeParameter.ts
2016-09-10 07:20:05 -07:00

18 lines
388 B
TypeScript

// @strictNullChecks: true
// Repro from #10811
interface Pet {
name: string;
}
function isPet(pet: any): pet is Pet {
return typeof pet.name === "string";
}
export function speak<TPet extends Pet>(pet: TPet, voice: (pet: TPet) => string): string {
if (!isPet(pet)) {
throw new Error("Expected \"pet\" to be a Pet");
}
return voice(pet);
}