"autocomplete suggestions intellisense differences between indexed access and dotted access"
"indexed access vs dotted access suggested properties"
I tested it in TS Playground with Nightly and TS 5.2.
/**
* Mimicking rxjs to avoid dependency import
*/
type Observable<X> = {
subscribe(): Observable<X>
};
enum CPEvents {
CLICK = "click",
PLAY = "play",
CANPLAY = "canplay",
PLAYING = "playing",
PAUSE = "pause",
ERROR = "error",
ENDED = "ended",
LOADSTART = "loadStart",
RATECHANGE = "ratechange",
WAITING = "waiting",
SEEKING = "seeking",
SEEKED = "seeked",
TIMEUPDATE = "timeupdate",
VOLUMECHANGE = "volumechange",
DURATIONCHANGE = "durationchange",
ADDTRACK = "addtrack",
EMSG = "emsg",
PLAYBACK_BEGIN_HALTED = "playbackBeginHalted",
START_TIME_AVAILABLE = "startTimeAvailable",
CONTENT_STATE_CHANGED = "contentStateChanged",
AUDIO_PLAY_RIGHT_ACQUIRED = "audioPlayRightAcquired",
STATS_UPDATE = "statsUpdate",
}
// Payloads have been replaced for the repro-case, but they do not matter right now.
interface CPMappedEvents {
[CPEvents.EMSG]: unknown;
[CPEvents.DURATIONCHANGE]: unknown;
[CPEvents.VOLUMECHANGE]: unknown;
[CPEvents.TIMEUPDATE]: unknown;
[CPEvents.ERROR]: unknown;
[CPEvents.RATECHANGE]: unknown;
[CPEvents.ADDTRACK]: unknown;
[CPEvents.CONTENT_STATE_CHANGED]: unknown;
[CPEvents.START_TIME_AVAILABLE]: unknown;
[CPEvents.PLAYBACK_BEGIN_HALTED]: unknown;
[CPEvents.STATS_UPDATE]: unknown;
[CPEvents.AUDIO_PLAY_RIGHT_ACQUIRED]: unknown;
[CPEvents.SEEKING]: unknown;
[CPEvents.SEEKED]: unknown;
}
type CPUnmappedEvents = {
[K in Exclude<CPEvents, keyof CPMappedEvents>]: Event;
};
export type CPEventsMap = CPMappedEvents & CPUnmappedEvents;
export type CPObservableEvents = {
[K in keyof CPEventsMap]: Observable<CPEventsMap[K]>;
};
declare const eventObservables: CPObservableEvents;
Intellisense (autocomplete) suggests two different subset of valid values when accessing a mapped object through dotted access and indexed access, but accessing with a dotted access to an unsuggested (available in indexed access and there fore still valid) property seems to be still valid and well-recognized.
The suggested values should be the same if there is not a specific indexed signature.
🔎 Search Terms
"autocomplete suggestions intellisense differences between indexed access and dotted access"
"indexed access vs dotted access suggested properties"
🕗 Version & Regression Information
I tested it in TS Playground with Nightly and TS 5.2.
⏯ Playground Link
https://www.typescriptlang.org/play?ts=5.3.0-dev.20231013#code/PQKhCgAIUhxB5AggGQFyQOYEsBuBTAO0gEMjCBXAW0gHsAzSABxoGcWsAjAGz0j3wIAXFgBpIAd17jSgyIJpQYxNlgxEWNSr36FZjYgE8uNYgBM5Bxr3mQNW2g0EALbQOEA6RZC8AVF5AAnPBZZFicaci5zDDxZYkxCPACsAGNIACIAUTd0pkNjMxIVNTxTT2hIAHU8MWdCMTCIqMgOXmJuaxpILQCYlppnOX8QgPIUwXIgli9Sc1aSDsgsIjpyAnGsGgIWIeJZchZeGIIk1J2uLABraycsHa3eVuNxLxsaDkFiZaHefSMTcwhYgBQTLDCQOgBTQ-PhuCxWcogYDgcCmPApLjA3irdagrYQrBcQRJADCB3klGyugACvkAQAxGgBKlCAA8Pj4AA9iQRTDsSdSWcIAHwACjoTKF6B8AEp0PAOIcAjh2jxWQKhSwALLERgAbR8AF1hSjQBAKlqsJRUpcwYFOQArHY2Yg4GhYcxoqy8wgpAxLSjMEGKZHgQSWXgKpUqjqsgAawsgAF5IABvcAASBY5EVKWSrVFcsgUaSMbVCfAAF8ANymsCQZCxADkO1a2CISJRFGoGrcO3TGZJyAAkiSANLJjIYm3pESZ6nIRAATUn6UYmIMs8zJMQADkF8vVylSOvDFuMwel8Pd7BV6eDGDz9TEABVADKmTvxAOeHPmQASv+8D-quSRQgEf67gAIpkUGgT6pjnsgSBQW+PiIP+HIpukBSmG+nwgue-6ID4mQkgAEnusCfthAR7OiTikDE56VIgw4+Net7YdIWCggQGDnh+mRjpxq6HHgtr8YJmTCbBYl4BJpTnhxWqZC+1JQSRNEZKCWjkIwpj0eeABq8DIC+qkUVR2npG6XBUAxTG-nOGZQS+xEcfAu5WTeNmmJMeybOsjH8c5maIFBUE+MR46rmYpiCHRKSXH+WpvlxGR4JQLACS5l4AEKIOOAD6+WZLA17FZRyCkXB2H3hwxDJfleDtuRxBEkpLloRhPjFSpmTFYgxlsYu+XIDZQIgj4Vp4IgKqEqqYWDl5pG7n1PWkcVPnUXVU5bDygj4fRJIhTEiEua+UHDvAxWXsV-7DrA5F9UVACKL7Dv+cnYd+pibNSG7-qoTiCIgKQAI7kFgQQXZmm1vsV6maaRYmfMIL4GUZc6VqawCQLS-xmDsjH4C0ClEEEp4pKUEJMjCVNQgAtMehxiBw5CyHU-qmF0BADN0ezEgEgQg7I-PiJ4yzC3QTW8AKOqMFYpiammmZ6r2ugsO4mRpbAhroGslwSwQ1beBmGuCn27huR5N3eZRvkG5ARsm7WFua0I2umeZlmO9RzuuzQ4im+rnseANyNaYHBDG8Hoce1bWs64BwEx3HIfu5bmruB5ZH+5k6du2HSde+4EVRTFY5F-HWfh9rJKrZk63FZtg07bBNeZyXOc9Zh-XDqpQ0jcOY0TV3CfZ9bBVFWOpXlZV1W1RPdelx4CNIxp0eG7HxeJznV03Xdi5Lg9T0vUNJIfV9nc7xnk-1+4QkiTeK899bz+3y7u+11WdbmjAPwdwliiAcJAFIEQAhsxhCwYg9h6BeC8AAAxQV4f86ImSmFZJkTkGJyBonVGvUB1wDD0EgArXUytNTCjEEKE0FQUFIJDCicMVhyHUhfAQSglDSiqxTAOPUE5vg4LwQQ+uYgSFkIoUrXhfZhTOyFLWGsXZORBi5hGdhmpFaTmkVQvskAABk7DOHcJkSrPstZwB4FUUydRbCBQlmVEtPhasLZCKIJIhg9dFbO0cWWPAhCtG6kEcaJRlizReEbIIFs4Cgj0VoJMWgHAHTolkOIXiTgEki1MYwMEXhWiCEkIQPgBAqCQBITsWYSToxLW1sw1E6JMRBHAVsEIsJdB+NqegBxipSzOIsf-Lwu5g60G9DCaWeAuAXEONsXg+NvzyAgYGHgeIiBaFKbQIgzhgHWMYFMdg+IOA83dPxfozhUCIIYagioOghCdI6HUq5TCKgzF5JcmAjCvC3MEPcngLA9TpHSIaZBKCAAF7zvAVD8NoVRqTaZTEiLIYBzg9hLC5i4f0jRIjmD2TQHAHprDiC6P9OgdAki6C8NmXpwgwEpHCKkYIkBRTEhCLTdJgxdxiy4P6fE8BxiQAAIwAGYZT1O+b84IgyKj5RfD4MQWAGDDkgLzEgKQaZsCGFCcgGBMm80EMScwTV1XOi6PEXFVgQT+hRUinY-NQjapiKy0wc4Ki8RAYEDBagsAAC9abKEgCqC4hreQSEmVweEpREShnFb0pxDz3ANSapcFqbUOoGvAMAfGkBs05tzXmyAAA9AA-FKwBtwdh3HldsYkZgxBBAgV631ZRIDQuaeJbKchTVKyxEIbl5NNl9oeMqhVZKgjrBuHsLw1odWyHmHUcpeAeWOH8LijolB0DmqSOGBdBhKnNPrTQRtfqdgktHboKNXY3ASu1voH8Gas35sfdm4tLCNFjkXSweAdAhTXsnJ4iNZCY01IebWTNuaX2luLAwCBkxoFGuCOwU5zgtU6pKWUip7qQiEnDYGj0F7wAQOrZATkk5RRAb6Q8qeycZ4lTKhVXcVUUDLxlKBh9haS0EdabIf0KYyNXtjf4-5j9nzvkLix+94Gi1AA
💻 Code
🙁 Actual behavior
Intellisense (autocomplete) suggests two different subset of valid values when accessing a mapped object through dotted access and indexed access, but accessing with a dotted access to an unsuggested (available in indexed access and there fore still valid) property seems to be still valid and well-recognized.
🙂 Expected behavior
The suggested values should be the same if there is not a specific indexed signature.
Additional information about the issue
No response