@@ -647,7 +647,7 @@ function f3<K extends keyof ArgMap>(funcs: Funcs, key: K, arg: ArgMap[K]) {
647
647
>ArgMap : Symbol(ArgMap, Decl(correlatedUnions.ts, 157, 1))
648
648
>K : Symbol(K, Decl(correlatedUnions.ts, 174, 12))
649
649
650
- const func: Func<K> = funcs[key]; // Error, Funcs[K] not assignable to Func<K>
650
+ const func: Func<K> = funcs[key];
651
651
>func : Symbol(func, Decl(correlatedUnions.ts, 175, 9))
652
652
>Func : Symbol(Func, Decl(correlatedUnions.ts, 161, 39))
653
653
>K : Symbol(K, Decl(correlatedUnions.ts, 174, 12))
@@ -824,3 +824,107 @@ type Baz = { [K in keyof BarLookup]: BarLookup[K]['name'] };
824
824
>BarLookup : Symbol(BarLookup, Decl(correlatedUnions.ts, 230, 63))
825
825
>K : Symbol(K, Decl(correlatedUnions.ts, 234, 14))
826
826
827
+ // repro from #43982
828
+
829
+ interface Original {
830
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
831
+
832
+ prop1: {
833
+ >prop1 : Symbol(Original.prop1, Decl(correlatedUnions.ts, 238, 20))
834
+
835
+ subProp1: string;
836
+ >subProp1 : Symbol(subProp1, Decl(correlatedUnions.ts, 239, 10))
837
+
838
+ subProp2: string;
839
+ >subProp2 : Symbol(subProp2, Decl(correlatedUnions.ts, 240, 21))
840
+
841
+ };
842
+ prop2: {
843
+ >prop2 : Symbol(Original.prop2, Decl(correlatedUnions.ts, 242, 4))
844
+
845
+ subProp3: string;
846
+ >subProp3 : Symbol(subProp3, Decl(correlatedUnions.ts, 243, 10))
847
+
848
+ subProp4: string;
849
+ >subProp4 : Symbol(subProp4, Decl(correlatedUnions.ts, 244, 21))
850
+
851
+ };
852
+ }
853
+ type KeyOfOriginal = keyof Original;
854
+ >KeyOfOriginal : Symbol(KeyOfOriginal, Decl(correlatedUnions.ts, 247, 1))
855
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
856
+
857
+ type NestedKeyOfOriginalFor<T extends KeyOfOriginal> = keyof Original[T];
858
+ >NestedKeyOfOriginalFor : Symbol(NestedKeyOfOriginalFor, Decl(correlatedUnions.ts, 248, 36))
859
+ >T : Symbol(T, Decl(correlatedUnions.ts, 249, 28))
860
+ >KeyOfOriginal : Symbol(KeyOfOriginal, Decl(correlatedUnions.ts, 247, 1))
861
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
862
+ >T : Symbol(T, Decl(correlatedUnions.ts, 249, 28))
863
+
864
+ type SameKeys<T> = {
865
+ >SameKeys : Symbol(SameKeys, Decl(correlatedUnions.ts, 249, 73))
866
+ >T : Symbol(T, Decl(correlatedUnions.ts, 251, 14))
867
+
868
+ [K in keyof T]: {
869
+ >K : Symbol(K, Decl(correlatedUnions.ts, 252, 3))
870
+ >T : Symbol(T, Decl(correlatedUnions.ts, 251, 14))
871
+
872
+ [K2 in keyof T[K]]: number;
873
+ >K2 : Symbol(K2, Decl(correlatedUnions.ts, 253, 5))
874
+ >T : Symbol(T, Decl(correlatedUnions.ts, 251, 14))
875
+ >K : Symbol(K, Decl(correlatedUnions.ts, 252, 3))
876
+
877
+ };
878
+ };
879
+
880
+ type MappedFromOriginal = SameKeys<Original>;
881
+ >MappedFromOriginal : Symbol(MappedFromOriginal, Decl(correlatedUnions.ts, 255, 2))
882
+ >SameKeys : Symbol(SameKeys, Decl(correlatedUnions.ts, 249, 73))
883
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
884
+
885
+ const getStringAndNumberFromOriginalAndMapped = <
886
+ >getStringAndNumberFromOriginalAndMapped : Symbol(getStringAndNumberFromOriginalAndMapped, Decl(correlatedUnions.ts, 259, 5))
887
+
888
+ K extends KeyOfOriginal,
889
+ >K : Symbol(K, Decl(correlatedUnions.ts, 259, 49))
890
+ >KeyOfOriginal : Symbol(KeyOfOriginal, Decl(correlatedUnions.ts, 247, 1))
891
+
892
+ N extends NestedKeyOfOriginalFor<K>
893
+ >N : Symbol(N, Decl(correlatedUnions.ts, 260, 26))
894
+ >NestedKeyOfOriginalFor : Symbol(NestedKeyOfOriginalFor, Decl(correlatedUnions.ts, 248, 36))
895
+ >K : Symbol(K, Decl(correlatedUnions.ts, 259, 49))
896
+
897
+ >(
898
+ original: Original,
899
+ >original : Symbol(original, Decl(correlatedUnions.ts, 262, 2))
900
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
901
+
902
+ mappedFromOriginal: MappedFromOriginal,
903
+ >mappedFromOriginal : Symbol(mappedFromOriginal, Decl(correlatedUnions.ts, 263, 21))
904
+ >MappedFromOriginal : Symbol(MappedFromOriginal, Decl(correlatedUnions.ts, 255, 2))
905
+
906
+ key: K,
907
+ >key : Symbol(key, Decl(correlatedUnions.ts, 264, 41))
908
+ >K : Symbol(K, Decl(correlatedUnions.ts, 259, 49))
909
+
910
+ nestedKey: N
911
+ >nestedKey : Symbol(nestedKey, Decl(correlatedUnions.ts, 265, 9))
912
+ >N : Symbol(N, Decl(correlatedUnions.ts, 260, 26))
913
+
914
+ ): [Original[K][N], MappedFromOriginal[K][N]] => {
915
+ >Original : Symbol(Original, Decl(correlatedUnions.ts, 234, 60))
916
+ >K : Symbol(K, Decl(correlatedUnions.ts, 259, 49))
917
+ >N : Symbol(N, Decl(correlatedUnions.ts, 260, 26))
918
+ >MappedFromOriginal : Symbol(MappedFromOriginal, Decl(correlatedUnions.ts, 255, 2))
919
+ >K : Symbol(K, Decl(correlatedUnions.ts, 259, 49))
920
+ >N : Symbol(N, Decl(correlatedUnions.ts, 260, 26))
921
+
922
+ return [original[key][nestedKey], mappedFromOriginal[key][nestedKey]];
923
+ >original : Symbol(original, Decl(correlatedUnions.ts, 262, 2))
924
+ >key : Symbol(key, Decl(correlatedUnions.ts, 264, 41))
925
+ >nestedKey : Symbol(nestedKey, Decl(correlatedUnions.ts, 265, 9))
926
+ >mappedFromOriginal : Symbol(mappedFromOriginal, Decl(correlatedUnions.ts, 263, 21))
927
+ >key : Symbol(key, Decl(correlatedUnions.ts, 264, 41))
928
+ >nestedKey : Symbol(nestedKey, Decl(correlatedUnions.ts, 265, 9))
929
+
930
+ };
0 commit comments