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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
=== tests/cases/conformance/types/stringLiteral/stringLiteralTypesOverloads03.ts ===
interface Base {
x: string;
>x : string
y: number;
>y : number
}
interface HelloOrWorld extends Base {
p1: boolean;
>p1 : boolean
}
interface JustHello extends Base {
p2: boolean;
>p2 : boolean
}
interface JustWorld extends Base {
p3: boolean;
>p3 : boolean
}
let hello: "hello";
>hello : "hello"
let world: "world";
>world : "world"
let helloOrWorld: "hello" | "world";
>helloOrWorld : "hello" | "world"
function f(p: "hello"): JustHello;
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>p : "hello"
function f(p: "hello" | "world"): HelloOrWorld;
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>p : "hello" | "world"
function f(p: "world"): JustWorld;
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>p : "world"
function f(p: string): Base;
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>p : string
function f(...args: any[]): any {
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>args : any[]
return undefined;
>undefined : undefined
}
let fResult1 = f(hello);
>fResult1 : JustHello
>f(hello) : JustHello
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>hello : "hello"
let fResult2 = f(world);
>fResult2 : JustWorld
>f(world) : JustWorld
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>world : "world"
let fResult3 = f(helloOrWorld);
>fResult3 : HelloOrWorld
>f(helloOrWorld) : HelloOrWorld
>f : { (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; (p: string): Base; }
>helloOrWorld : "hello" | "world"
function g(p: string): Base;
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>p : string
function g(p: "hello"): JustHello;
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>p : "hello"
function g(p: "hello" | "world"): HelloOrWorld;
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>p : "hello" | "world"
function g(p: "world"): JustWorld;
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>p : "world"
function g(...args: any[]): any {
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>args : any[]
return undefined;
>undefined : undefined
}
let gResult1 = g(hello);
>gResult1 : JustHello
>g(hello) : JustHello
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>hello : "hello"
let gResult2 = g(world);
>gResult2 : JustWorld
>g(world) : JustWorld
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>world : "world"
let gResult3 = g(helloOrWorld);
>gResult3 : Base
>g(helloOrWorld) : Base
>g : { (p: string): Base; (p: "hello"): JustHello; (p: "hello" | "world"): HelloOrWorld; (p: "world"): JustWorld; }
>helloOrWorld : "hello" | "world"
|