En VS2022 parece haber una revisión importante en el Servicio Intellisense de Javascript en comparación con VS2019.
Javascript Intellisense ya no parece reconocer las propiedades del objeto asignadas fuera del contexto de creación inicial.
var r = { a: 1, b: 2 }; rc = 3; //"ra" and "rb" will here be identified by Intellisense, but not "rc".Este es un comportamiento muy frustrante cuando hay alcances y objetos inyectados de dependencia como en un proyecto AngularJs, ya que estos ya no ofrecen autocompletado inteligente o navegación usando "ir a definición".
Anteriormente, esto funcionó muy bien sin encabezados JSDoc en VS2019.
a , b , c , d , e están todos disponibles aquí.
Solo a , b , d están disponibles aquí.
¿Hay alguna configuración o paquete conocido para modificar/corregir este nuevo comportamiento?
Esto sucede porque en javascript no tiene declaraciones de tipo y dado que solo está declarando dos propiedades, se supone que su objeto contiene solo esas. Puede evitar esto agregando comentarios, sin cambios en el código/lógica, pero intellisense los reconocerá
/** @type { {a: number, b: number, c?: number} } */ const obj = { a: 1, b: 2 }; // Now you can access every property your object has (not only the declared) and intellisense will recognize those declaredDe la misma manera se puede declarar:
/** @type {string} */ const num = 12; // Now intellisense will recognize it as a string even if it's a number // and because in JS it's not an error to assign a number or a string to // a variable it will throw an error at runtime if you try thing like // num.trim();Asegúrate de lo que estás declarando