microsoft / microsoft/TypeScript

Interface stop working after passing an optional function attribute

Abierto
#43,142 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: check: Type Inference
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
1 d 19 h
PR fusionados (30 d)
117

Descripción

Bug Report

🕗 Version & Regression Information
  • This is the behavior in every version I tried.
⏯ Playground Link

Playground link with relevant code

💻 Code
interface Options<Self extends Options<Self>> {
    attr1: Record<string, null>;
    attr2: keyof Self["attr1"];
    attr3?: (arg: any) => any;
}

function test<T extends Options<T>>(options: T) {
    return options
}

test({
    attr1: {
        a: null,
    },
    attr2: "a", // here I got the expected auto-completion hint and the type is `a`.
});

test({
    attr1: {
        a: null,
    },
    attr2: "a", // here the type is `never` and a problem is caused
    attr3: (arg) => arg,
});
🙁 Actual behavior
🙂 Expected behavior

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

Abre el TypeScript Playground enlazado y compara las dos llamadas a test<T extends Options> usando la interfaz recursiva Options. Investiga por qué añadir attr3 opcional cambia attr2 de la clave inferida a never. Se considera terminado cuando ambos ejemplos conservan el tipo attr2 esperado y el comportamiento de autocompletado, y se añade cobertura de regresión en la compiler test suite.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.