1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
=== tests/cases/conformance/types/stringLiteral/stringLiteralTypesTypePredicates01.ts ===
type Kind = "A" | "B"
>Kind : Kind
function kindIs(kind: Kind, is: "A"): kind is "A";
>kindIs : { (kind: Kind, is: "A"): kind is "A"; (kind: Kind, is: "B"): kind is "B"; }
>kind : Kind
>Kind : Kind
>is : "A"
>kind : any
function kindIs(kind: Kind, is: "B"): kind is "B";
>kindIs : { (kind: Kind, is: "A"): kind is "A"; (kind: Kind, is: "B"): kind is "B"; }
>kind : Kind
>Kind : Kind
>is : "B"
>kind : any
function kindIs(kind: Kind, is: Kind): boolean {
>kindIs : { (kind: Kind, is: "A"): kind is "A"; (kind: Kind, is: "B"): kind is "B"; }
>kind : Kind
>Kind : Kind
>is : Kind
>Kind : Kind
return kind === is;
>kind === is : boolean
>kind : Kind
>is : Kind
}
var x: Kind = undefined;
>x : Kind
>Kind : Kind
>undefined : undefined
if (kindIs(x, "A")) {
>kindIs(x, "A") : boolean
>kindIs : { (kind: Kind, is: "A"): kind is "A"; (kind: Kind, is: "B"): kind is "B"; }
>x : Kind
>"A" : "A"
let a = x;
>a : "A"
>x : "A"
}
else {
let b = x;
>b : "B"
>x : "B"
}
if (!kindIs(x, "B")) {
>!kindIs(x, "B") : boolean
>kindIs(x, "B") : boolean
>kindIs : { (kind: Kind, is: "A"): kind is "A"; (kind: Kind, is: "B"): kind is "B"; }
>x : Kind
>"B" : "B"
let c = x;
>c : "A"
>x : "A"
}
else {
let d = x;
>d : "B"
>x : "B"
}
|