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
|
=== tests/cases/conformance/types/nonPrimitive/nonPrimitiveConstraintOfIndexAccessType.ts ===
// test for #15371
function f<T extends object, P extends keyof T>(s: string, tp: T[P]): void {
>f : <T extends object, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function g<T extends null, P extends keyof T>(s: string, tp: T[P]): void {
>g : <T extends null, P extends keyof T>(s: string, tp: T[P]) => void
>null : null
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function h<T extends undefined, P extends keyof T>(s: string, tp: T[P]): void {
>h : <T extends undefined, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function i<T extends void, P extends keyof T>(s: string, tp: T[P]): void {
>i : <T extends void, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function j<T extends never, P extends keyof T>(s: string, tp: T[P]): void {
>j : <T extends never, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function k<T extends number, P extends keyof T>(s: string, tp: T[P]): void {
>k : <T extends number, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function o<T extends string, P extends keyof T>(s: string, tp: T[P]): void {
>o : <T extends string, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function l<T extends {}, P extends keyof T>(s: string, tp: T[P]): void {
>l : <T extends {}, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function m<T extends { a: number }, P extends keyof T>(s: string, tp: T[P]): void {
>m : <T extends { a: number; }, P extends keyof T>(s: string, tp: T[P]) => void
>a : number
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
function n<T extends { [s: string]: number }, P extends keyof T>(s: string, tp: T[P]): void {
>n : <T extends { [s: string]: number; }, P extends keyof T>(s: string, tp: T[P]) => void
>s : string
>s : string
>tp : T[P]
tp = s;
>tp = s : string
>tp : T[P]
>s : string
}
|