@@ -836,3 +836,58 @@ function f<T extends { x: {} }>(): Partial<T> {
836836>T : Symbol(T, Decl(mappedTypeRelationships.ts, 188, 11))
837837}
838838
839+ // #32365
840+ interface SettingsTypes {
841+ >SettingsTypes : Symbol(SettingsTypes, Decl(mappedTypeRelationships.ts, 190, 1))
842+
843+ audio: {
844+ >audio : Symbol(SettingsTypes.audio, Decl(mappedTypeRelationships.ts, 193, 25))
845+
846+ volume: string;
847+ >volume : Symbol(volume, Decl(mappedTypeRelationships.ts, 194, 10))
848+
849+ };
850+ video: {
851+ >video : Symbol(SettingsTypes.video, Decl(mappedTypeRelationships.ts, 196, 4))
852+
853+ resolution: string;
854+ >resolution : Symbol(resolution, Decl(mappedTypeRelationships.ts, 197, 10))
855+
856+ };
857+ }
858+ interface Settings<Params extends { [K in keyof Params]?: string }> {
859+ >Settings : Symbol(Settings, Decl(mappedTypeRelationships.ts, 200, 1))
860+ >Params : Symbol(Params, Decl(mappedTypeRelationships.ts, 201, 19))
861+ >K : Symbol(K, Decl(mappedTypeRelationships.ts, 201, 37))
862+ >Params : Symbol(Params, Decl(mappedTypeRelationships.ts, 201, 19))
863+
864+ config: Params;
865+ >config : Symbol(Settings.config, Decl(mappedTypeRelationships.ts, 201, 69))
866+ >Params : Symbol(Params, Decl(mappedTypeRelationships.ts, 201, 19))
867+ }
868+ type ConcreteSettingsResult1 = Settings<SettingsTypes["audio"]>;
869+ >ConcreteSettingsResult1 : Symbol(ConcreteSettingsResult1, Decl(mappedTypeRelationships.ts, 203, 1))
870+ >Settings : Symbol(Settings, Decl(mappedTypeRelationships.ts, 200, 1))
871+ >SettingsTypes : Symbol(SettingsTypes, Decl(mappedTypeRelationships.ts, 190, 1))
872+
873+ type ConcreteSettingsResult2 = Settings<SettingsTypes["audio" | "video"]>;
874+ >ConcreteSettingsResult2 : Symbol(ConcreteSettingsResult2, Decl(mappedTypeRelationships.ts, 204, 64))
875+ >Settings : Symbol(Settings, Decl(mappedTypeRelationships.ts, 200, 1))
876+ >SettingsTypes : Symbol(SettingsTypes, Decl(mappedTypeRelationships.ts, 190, 1))
877+
878+ type GenericSettingsAccess<T extends keyof SettingsTypes> = Settings<SettingsTypes[T]>;
879+ >GenericSettingsAccess : Symbol(GenericSettingsAccess, Decl(mappedTypeRelationships.ts, 205, 74))
880+ >T : Symbol(T, Decl(mappedTypeRelationships.ts, 206, 27))
881+ >SettingsTypes : Symbol(SettingsTypes, Decl(mappedTypeRelationships.ts, 190, 1))
882+ >Settings : Symbol(Settings, Decl(mappedTypeRelationships.ts, 200, 1))
883+ >SettingsTypes : Symbol(SettingsTypes, Decl(mappedTypeRelationships.ts, 190, 1))
884+ >T : Symbol(T, Decl(mappedTypeRelationships.ts, 206, 27))
885+
886+ type GenericSettingsResult1 = GenericSettingsAccess<"audio">;
887+ >GenericSettingsResult1 : Symbol(GenericSettingsResult1, Decl(mappedTypeRelationships.ts, 206, 87))
888+ >GenericSettingsAccess : Symbol(GenericSettingsAccess, Decl(mappedTypeRelationships.ts, 205, 74))
889+
890+ type GenericSettingsResult2 = GenericSettingsAccess<"audio" | "video">;
891+ >GenericSettingsResult2 : Symbol(GenericSettingsResult2, Decl(mappedTypeRelationships.ts, 207, 61))
892+ >GenericSettingsAccess : Symbol(GenericSettingsAccess, Decl(mappedTypeRelationships.ts, 205, 74))
893+
0 commit comments