@@ -388,3 +388,40 @@ function get123<K extends keyof Type>(): Type[K] {
388
388
return 123; // Error
389
389
}
390
390
391
+ // Repros from #30938
392
+
393
+ function fn<T extends {elements: Array<string>} | {elements: Array<number>}>(param: T, cb: (element: T['elements'][number]) => void) {
394
+ >fn : Symbol(fn, Decl(keyofAndIndexedAccess2.ts, 108, 1))
395
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
396
+ >elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23))
397
+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
398
+ >elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 51))
399
+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
400
+ >param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 112, 77))
401
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
402
+ >cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 112, 86))
403
+ >element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 112, 92))
404
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 112, 12))
405
+
406
+ cb(param.elements[0]);
407
+ >cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 112, 86))
408
+ >param.elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23), Decl(keyofAndIndexedAccess2.ts, 112, 51))
409
+ >param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 112, 77))
410
+ >elements : Symbol(elements, Decl(keyofAndIndexedAccess2.ts, 112, 23), Decl(keyofAndIndexedAccess2.ts, 112, 51))
411
+ }
412
+
413
+ function fn2<T extends Array<string>>(param: T, cb: (element: T[number]) => void) {
414
+ >fn2 : Symbol(fn2, Decl(keyofAndIndexedAccess2.ts, 114, 1))
415
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
416
+ >Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --) ... and 2 more)
417
+ >param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 116, 38))
418
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
419
+ >cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 116, 47))
420
+ >element : Symbol(element, Decl(keyofAndIndexedAccess2.ts, 116, 53))
421
+ >T : Symbol(T, Decl(keyofAndIndexedAccess2.ts, 116, 13))
422
+
423
+ cb(param[0]);
424
+ >cb : Symbol(cb, Decl(keyofAndIndexedAccess2.ts, 116, 47))
425
+ >param : Symbol(param, Decl(keyofAndIndexedAccess2.ts, 116, 38))
426
+ }
427
+
0 commit comments