microsoft / microsoft/TypeScript

Autocomplete on extends keyof generic

Abierto
#28,662 8 comentarios 44 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Domain: LS: Completion Lists Experience Enhancement Suggestion
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

TypeScript Version: 3.3.0-dev.20181122

Search Terms:

  • autocomplete
  • autocomplete generic
  • generic extends
  • autocomplete keyof extends
  • autocomplete keyof generic

Code

type Except<T, K extends keyof T> = Pick<T, { [P in keyof T]: P extends K ? never : P }[keyof T]>;

interface I1 {
    foo: string;
}
function F1<T extends I1>(): Except<T, ''> { // error is shown but autocomplete is not provided
    //code
    return null;
}

Expected behavior:
Having autocomplete showing when extending a generic

Actual behavior:
Even if error is correctly displayed, no autocomplete is shown for a T extends with a known type on the right hand.

Playground Link:
https://www.typescriptlang.org/play/index.html#src=type%20Except%3CT%2C%20K%20extends%20keyof%20T%3E%20%3D%20Pick%3CT%2C%20%7B%20%5BP%20in%20keyof%20T%5D%3A%20P%20extends%20K%20%3F%20never%20%3A%20P%20%7D%5Bkeyof%20T%5D%3E%3B%0A%0Ainterface%20I1%20%7B%0A%20%20%20%20foo%3A%20string%3B%0A%7D%0Afunction%20F1%3CT%20extends%20I1%3E()%3A%20Except%3CT%2C%20''%3E%20%7B%0A%20%20%20%20%2F%2Fcode%0A%20%20%20%20return%20null%3B%0A%7D

Related Issues:
#16740 - but this one is quite different because it's a keyof issue

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el problema utilizando el enlace proporcionado a TypeScript Playground y el ejemplo genérico indicado extends keyof. Rastrea la ruta de autocompletado de TypeScript para restricciones como T extends I1; se considera terminado cuando aparecen sugerencias de completado donde actualmente el problema informa de un error sin autocompletado, y el comportamiento existente está cubierto por una prueba adecuada.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers, 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
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.