🔎 Search Terms
deferred index mapped type apparent keys
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play?noErrorTruncation=true&ts=5.4.0-dev.20240110#code/PTAEAEDsHsFECd7XgFXgV0gYwIYBcBLaSALlDwwFMAoPATwAdLQA1HAG3UoGcAeFAHygAvKBQBtANaU60AGZiAugG5ajZgEluAOUoA3SvH5DR4lItCUAHnkqQAJt1DjI+wxYD85KqDJyO3JSq9EygAMI43Hi8AIIANKAAQiagMZY2do5JoF5pZInB6uHQALYM6Lax6bYOTjiQdCkA3s4A0qAEkKDSsgoximQx4q0WAL6gAGSgmJIwAO6QhaEakAbw0SjVmU4ASpRYyPa8AApITOt0rTIJp9Dn9FeNzdSgbR1dPfJioJFiw4oDUCtVSjVTUTq2eD+LDMGJYPDIAAy0AA5gQsLxOqBoBUxABlSA4BjcAAW0DwCSxOLwYlgBkgNOsNSyLRClDIUXgnRRoFGQiaL289W4BEIxDIAApuITiWS8GQUASiaTyQkSjxuDgUezafS8ABKERCRUylV4EHUNShGINOEI+DItFYESpeFI1Ho3j1OgJb0CMEQwzQ2Fu+B7OT8JWy1W6uyMjK1UCs9Qcijc3n8wWBByStwMhV0uOG4RCPTQAj2VSvbV4KNmyXF411uUWq2w22h8Muu3IcNehq+hr+y1s1328MAMSQJWMLs2TO2Y-dTsxkDkhnxprllLXG5QhYZAkFuU7lAjJuV29jh8FZFcawDDKDOBhoFuegrlHsPfgSaz8CwVMuUgFEq1AdgPUA1IO3tR10TAisPCA7lW3sfZ2BweBmCwDDuCcPE8HwSgAFkXxJTpKF4QUUDCcj2HsLCugXRM9gOeAjk5bkEhtOgfy7AAfaYHDPCj7AEOJqEzV4sDohi7AVWiCHoxjW1HWAbHgF88ERUVDA4AjgJRfgtkTTiQNAQTMDQuRRJSecEyyMyUWPUAnJMrIUEFV4vHvQwvN8MRb1AXz4DBUcUGgMJiCwLDbEU5S7H4H93Kcd9P2-UNnlecQ0ixFBkt+dSKC0nTIX0tMQNicQACIK2qxQBEUJClzDM8p1KKrqogp16uHUERyKCL4rkyAktDFK3yQD80Iy+0Ujc5iPJ-GruAA+qXNYw5eCc7iYN7M8j1eMgorKCpKP814hui2LKGGxixrmyYLteP8Xrel7Ohw9A0LIAV3v+5wK2QkDAXy8bFrqBpnoBnIWsnacHuQGruvRXqLKE6zROhgG7zcULsdefqYdeawvp+pMiYB0ZxCskTXHsCawftGq6osAnYdq7BODQ6r2eBnkIbEZbavsdbiY5z7ucoXnxbIarSalsWXuHNsxGgNKZp-KjLruuxSIYCbNvY7aKpRBInPE6ifycQWjaONhOB4fhdcgfXxOg3jQzgrBLZSB2uD4P63ixT4FCZ5AnCmJzASD15Vqg4F-JRqDw-gbh-jA14gdALRdDWZ3ZMYt2JooLhnq8NzLOEmz6eesh2kF0Oc9WQwNhdt3y+btY28LvWiQEf469c030dpmuvzA-q+TBNCcMw5g5EweEiC6QI8HQBhtaF0MbYc3Z9i2-2nZo3vXf73bPdgyDLZ10-9cNg-jZ24fDJSEKJIECUg60iOJNGX7BRsm4M1WOoAZJKRGs1E+ECi5EknmBH+acQH+WGO8boMgvip24KDa2GdBRT31AA6SWEiKkXAa4BsRpQAEVIWRCiW9XgRCiAwl6Q1T78HVlNdKWtoEJTPgwBIWCBA33enbE2hkL58TPKPautl-KHVAH1VQQA
💻 Code
// @noErrorTruncation: truetypeValues<T>=T[keyofT];typeIsNever<T>=[T]extends[never] ? true : false;typeCast<A,B>=AextendsB ? A : B;typeCompute<Aextendsany>={[KinkeyofA]: A[K]}&unknown;typeInvert<TextendsRecord<PropertyKey,PropertyKey>>={[KinkeyofTasT[K]]: K;};interfaceActorLogic<inoutTSnapshot,inoutTEventextends{type: string}>{transition: (snapshot: TSnapshot,message: TEvent)=>TSnapshot;}typeAnyActorLogic=ActorLogic<any,any>;interfaceActorRef<TSnapshot,TEventextends{type: string}>{send: (event: TEvent)=>void;getSnapshot: ()=>TSnapshot;}typeAnyActorRef=ActorRef<any,any>;typeActorRefFrom<T>=TextendsActorLogic<infer TSnapshot, infer TEvent>
? ActorRef<TSnapshot,TEvent>
: never;interfaceProvidedActor{src: string;logic: AnyActorLogic;id?: string;}declareclassStateMachine<TChildrenextendsRecord<string,AnyActorRef|undefined>,>{children: TChildren;}typeExtractLiteralString<Textendsstring|undefined>=Textendsstring
? stringextendsT
? never
: T
: never;typeToConcreteChildren<TActorextendsProvidedActor>={[AinTActorasExtractLiteralString<A["id"]>]?: ActorRefFrom<A["logic"]>;};typeToChildren<TActorextendsProvidedActor>=stringextendsTActor["src"]
? Record<string,AnyActorRef>
: Compute<ToConcreteChildren<TActor>&{include: {[id: string]: TActorextendsany
? ActorRefFrom<TActor["logic"]>|undefined
: never;};exclude: {};}[undefinedextendsTActor["id"] ? "include"
: stringextendsTActor["id"]
? "include"
: "exclude"]>;typeToProvidedActor<TChildrenMapextendsRecord<string,string>,TActorsextendsRecord<Values<TChildrenMap>,AnyActorLogic>,>=Values<{[KinkeyofTActors&string]: {src: K;logic: TActors[K];id: IsNever<TChildrenMap>extendstrue
? string|undefined
: KextendskeyofInvert<TChildrenMap>
? Invert<TChildrenMap>[K]
: string|undefined;};}>;declarefunctionsetup<TActorsextendsRecord<Values<TChildrenMap>,AnyActorLogic>,TChildrenMapextendsRecord<string,string>=never,>({
actors,}: {types?: {children?: TChildrenMap;};actors?: {[KinkeyofTActors]: TActors[K];};}): {createMachine: ()=>StateMachine<Cast<ToChildren<ToProvidedActor<TChildrenMap,TActors>>,Record<string,AnyActorRef|undefined>>>;};🙁 Actual behavior
It fails to be checked
🙂 Expected behavior
The used Cast should be enough to satisfy the constraint
Additional information about the issue
We can get rid off the error (but lose functionality):
- if we remove
id from ToProvidedActor - or if we remove
Compute from ToChildren - or if we remove any of the intersected types within this
Compute - or if we remove
ExtractLiteralString filter~ from ToConcreteChildren
cc Wesley Wigham (@weswigham) (since it's a change from #56742 )
🔎 Search Terms
deferred index mapped type apparent keys
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play?noErrorTruncation=true&ts=5.4.0-dev.20240110#code/PTAEAEDsHsFECd7XgFXgV0gYwIYBcBLaSALlDwwFMAoPATwAdLQA1HAG3UoGcAeFAHygAvKBQBtANaU60AGZiAugG5ajZgEluAOUoA3SvH5DR4lItCUAHnkqQAJt1DjI+wxYD85KqDJyO3JSq9EygAMI43Hi8AIIANKAAQiagMZY2do5JoF5pZInB6uHQALYM6Lax6bYOTjiQdCkA3s4A0qAEkKDSsgoximQx4q0WAL6gAGSgmJIwAO6QhaEakAbw0SjVmU4ASpRYyPa8AApITOt0rTIJp9Dn9FeNzdSgbR1dPfJioJFiw4oDUCtVSjVTUTq2eD+LDMGJYPDIAAy0AA5gQsLxOqBoBUxABlSA4BjcAAW0DwCSxOLwYlgBkgNOsNSyLRClDIUXgnRRoFGQiaL289W4BEIxDIAApuITiWS8GQUASiaTyQkSjxuDgUezafS8ABKERCRUylV4EHUNShGINOEI+DItFYESpeFI1Ho3j1OgJb0CMEQwzQ2Fu+B7OT8JWy1W6uyMjK1UCs9Qcijc3n8wWBByStwMhV0uOG4RCPTQAj2VSvbV4KNmyXF411uUWq2w22h8Muu3IcNehq+hr+y1s1328MAMSQJWMLs2TO2Y-dTsxkDkhnxprllLXG5QhYZAkFuU7lAjJuV29jh8FZFcawDDKDOBhoFuegrlHsPfgSaz8CwVMuUgFEq1AdgPUA1IO3tR10TAisPCA7lW3sfZ2BweBmCwDDuCcPE8HwSgAFkXxJTpKF4QUUDCcj2HsLCugXRM9gOeAjk5bkEhtOgfy7AAfaYHDPCj7AEOJqEzV4sDohi7AVWiCHoxjW1HWAbHgF88ERUVDA4AjgJRfgtkTTiQNAQTMDQuRRJSecEyyMyUWPUAnJMrIUEFV4vHvQwvN8MRb1AXz4DBUcUGgMJiCwLDbEU5S7H4H93Kcd9P2-UNnlecQ0ixFBkt+dSKC0nTIX0tMQNicQACIK2qxQBEUJClzDM8p1KKrqogp16uHUERyKCL4rkyAktDFK3yQD80Iy+0Ujc5iPJ-GruAA+qXNYw5eCc7iYN7M8j1eMgorKCpKP814hui2LKGGxixrmyYLteP8Xrel7Ohw9A0LIAV3v+5wK2QkDAXy8bFrqBpnoBnIWsnacHuQGruvRXqLKE6zROhgG7zcULsdefqYdeawvp+pMiYB0ZxCskTXHsCawftGq6osAnYdq7BODQ6r2eBnkIbEZbavsdbiY5z7ucoXnxbIarSalsWXuHNsxGgNKZp-KjLruuxSIYCbNvY7aKpRBInPE6ifycQWjaONhOB4fhdcgfXxOg3jQzgrBLZSB2uD4P63ixT4FCZ5AnCmJzASD15Vqg4F-JRqDw-gbh-jA14gdALRdDWZ3ZMYt2JooLhnq8NzLOEmz6eesh2kF0Oc9WQwNhdt3y+btY28LvWiQEf469c030dpmuvzA-q+TBNCcMw5g5EweEiC6QI8HQBhtaF0MbYc3Z9i2-2nZo3vXf73bPdgyDLZ10-9cNg-jZ24fDJSEKJIECUg60iOJNGX7BRsm4M1WOoAZJKRGs1E+ECi5EknmBH+acQH+WGO8boMgvip24KDa2GdBRT31AA6SWEiKkXAa4BsRpQAEVIWRCiW9XgRCiAwl6Q1T78HVlNdKWtoEJTPgwBIWCBA33enbE2hkL58TPKPautl-KHVAH1VQQA
💻 Code
🙁 Actual behavior
It fails to be checked
🙂 Expected behavior
The used
Castshould be enough to satisfy the constraintAdditional information about the issue
We can get rid off the error (but lose functionality):
idfromToProvidedActorComputefromToChildrenComputeExtractLiteralStringfilter~ fromToConcreteChildrencc Wesley Wigham (@weswigham) (since it's a change from #56742 )