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 70 71 72 73 74 75 76
|
=== tests/cases/conformance/types/stringLiteral/stringLiteralTypesAsTypeParameterConstraint01.ts ===
function foo<T extends "foo">(f: (x: T) => T) {
>foo : <T extends "foo">(f: (x: T) => T) => (x: T) => T
>T : T
>f : (x: T) => T
>x : T
>T : T
>T : T
return f;
>f : (x: T) => T
}
function bar<T extends "foo" | "bar">(f: (x: T) => T) {
>bar : <T extends "foo" | "bar">(f: (x: T) => T) => (x: T) => T
>T : T
>f : (x: T) => T
>x : T
>T : T
>T : T
return f;
>f : (x: T) => T
}
let f = foo(x => x);
>f : (x: "foo") => "foo"
>foo(x => x) : (x: "foo") => "foo"
>foo : <T extends "foo">(f: (x: T) => T) => (x: T) => T
>x => x : (x: "foo") => "foo"
>x : "foo"
>x : "foo"
let fResult = f("foo");
>fResult : "foo"
>f("foo") : "foo"
>f : (x: "foo") => "foo"
>"foo" : "foo"
let g = foo((x => x));
>g : (x: "foo") => "foo"
>foo((x => x)) : (x: "foo") => "foo"
>foo : <T extends "foo">(f: (x: T) => T) => (x: T) => T
>(x => x) : (x: "foo") => "foo"
>x => x : (x: "foo") => "foo"
>x : "foo"
>x : "foo"
let gResult = g("foo");
>gResult : "foo"
>g("foo") : "foo"
>g : (x: "foo") => "foo"
>"foo" : "foo"
let h = bar(x => x);
>h : (x: "foo" | "bar") => "foo" | "bar"
>bar(x => x) : (x: "foo" | "bar") => "foo" | "bar"
>bar : <T extends "foo" | "bar">(f: (x: T) => T) => (x: T) => T
>x => x : (x: "foo" | "bar") => "foo" | "bar"
>x : "foo" | "bar"
>x : "foo" | "bar"
let hResult = h("foo");
>hResult : "foo" | "bar"
>h("foo") : "foo" | "bar"
>h : (x: "foo" | "bar") => "foo" | "bar"
>"foo" : "foo"
hResult = h("bar");
>hResult = h("bar") : "foo" | "bar"
>hResult : "foo" | "bar"
>h("bar") : "foo" | "bar"
>h : (x: "foo" | "bar") => "foo" | "bar"
>"bar" : "bar"
|