microsoft / microsoft/TypeScript
Go-to-definition on interfaces shadowed by namespaces opens a selection dialog instead of going to the interface, when used as one.
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.4k
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 117
Descripción
Does this issue occur when all extensions are disabled?: Yes
- VS Code Version: 1.81.1
- OS Version: 13.4.1 (c)
Steps to Reproduce:
npm install openaiimport OpenAI from 'openai'; type Foo = OpenAI.Chat.Completion- cmd-click on "Completion"
- observe a dialog pop up, offering you the interface
Completionor the namespaceCompletion
Desired behavior:
Jump directly to the definition of the interface Completion, since that is how it's being used there.
Context:
Libraries like stripe and openai use the pattern of shadowing interfaces with namespaces when describing large JSON objects generated from their OpenAPI specs.
This was a tradeoff made because the alternatives are worse: you'd otherwise have to generate long, Java-like names (eg; ChatCompletionChoiceMessageFunctionCall), try to come up with minimal names (which could easily clash with future objects, causing backwards-compatibility issues), move all sub-objects into other files (which'd quickly get unreadable), or define all objects inline (which makes it difficult-to-impossible to directly reference object types whose parents are nullable/optional, members of unions, etc).
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el comportamiento con npm install openai y import OpenAI from 'openai'; type Foo = OpenAI.Chat.Completion, y luego usa cmd-click sobre Completion. Investiga el punto de entrada de go-to-definition y la resolución de símbolos para la interface y el namespace; se considera terminado cuando este uso abre la interface directamente sin un diálogo de selección.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- typescript
- Área
- developer-experience
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100