I really don't know how to describe this bug in short terms.
enumA{a='a',b='b'}interfaceObjA{prop1: string;}interfaceObjB{prop2: number;}typePayloadMap={[A.a]: ObjA;[A.b]: ObjB;}typeContent<TextendsA>={type: T;payload: PayloadMap[T];}functionprocessContent<TextendsA>(content: Content<T>){parserPayload[content.type](content.payload);// ^=========== here is the error}constparserPayload: {[keyinA]: (payload: PayloadMap[key])=>any}={// ^============ because this is treated// as an intersectiona: payload=>payload.prop1,b: payload=>payload.prop2,}Argument of type 'PayloadMap[T]' is not assignable to parameter of type 'ObjA & ObjB'.
TypeScript Version: 3.7.2
Search Terms: ts2345 derivated type error
I really don't know how to describe this bug in short terms.
Code
Expected behavior: To correctly know that
PayloadMap[key]is in fact the same asPayloadMap[T]sincekeymatchesT.Actual behavior:
Playground Link:https://www.typescriptlang.org/play/?ssl=1&ssc=1&pln=30&pc=2#code/KYOwrgtgBAglDeAoKKoEMoF4oHI04BplUAjLXEnRAX0UQEsQAXYAJwDM0BjYKAeRIArOElRQADqwD24gIwAuKAGcmrRgHMA3DQbM2nHvyEAhBMRSSZAJkXgIJNttqImAT3G8ACmlcAbKWgAJgCyaOLkoqgA2jAAdGgAuooCwtpiMbEkSUaCxk50bh5QAMJSeswAPAAqUMAAHiwggUqwAHwR5lCFwIpVaajiPv5Bit5+ASFhUVUJ+YjsYCBcTPRlEtI8Skql5UzVtQ2gzW0AFFxljUyKO5fVrQCUZmKDrEpsY8OBUee7sd0JZwuoCYsUG4yC9zmPxUEjQr3eQwmingUCiAGtgK4oIxYNkTmDPqNEUFQuJ0ZiEo9MO00CAsdQOmI0IoCRMsO1WUFQdI5EQxCQWcTAuzYeDAtzrERqEA
Related Issues: