@@ -540,3 +540,34 @@ let f: Foo2<O, 'x'> = {
540
540
541
541
};
542
542
543
+ // Repro from #28170
544
+
545
+ function test1<T, K extends keyof T>(obj: Pick<T, K>) {
546
+ >test1 : Symbol(test1, Decl(mappedTypeErrors.ts, 142, 2))
547
+ >T : Symbol(T, Decl(mappedTypeErrors.ts, 146, 15))
548
+ >K : Symbol(K, Decl(mappedTypeErrors.ts, 146, 17))
549
+ >T : Symbol(T, Decl(mappedTypeErrors.ts, 146, 15))
550
+ >obj : Symbol(obj, Decl(mappedTypeErrors.ts, 146, 37))
551
+ >Pick : Symbol(Pick, Decl(lib.es5.d.ts, --, --))
552
+ >T : Symbol(T, Decl(mappedTypeErrors.ts, 146, 15))
553
+ >K : Symbol(K, Decl(mappedTypeErrors.ts, 146, 17))
554
+
555
+ let x = obj.foo; // Error
556
+ >x : Symbol(x, Decl(mappedTypeErrors.ts, 147, 7))
557
+ >obj : Symbol(obj, Decl(mappedTypeErrors.ts, 146, 37))
558
+ }
559
+
560
+ function test2<T, K extends keyof T>(obj: Record<K, number>) {
561
+ >test2 : Symbol(test2, Decl(mappedTypeErrors.ts, 148, 1))
562
+ >T : Symbol(T, Decl(mappedTypeErrors.ts, 150, 15))
563
+ >K : Symbol(K, Decl(mappedTypeErrors.ts, 150, 17))
564
+ >T : Symbol(T, Decl(mappedTypeErrors.ts, 150, 15))
565
+ >obj : Symbol(obj, Decl(mappedTypeErrors.ts, 150, 37))
566
+ >Record : Symbol(Record, Decl(lib.es5.d.ts, --, --))
567
+ >K : Symbol(K, Decl(mappedTypeErrors.ts, 150, 17))
568
+
569
+ let x = obj.foo; // Error
570
+ >x : Symbol(x, Decl(mappedTypeErrors.ts, 151, 7))
571
+ >obj : Symbol(obj, Decl(mappedTypeErrors.ts, 150, 37))
572
+ }
573
+
0 commit comments