microsoft / microsoft/TypeScript
`asserts` keyword does not enhance hoisted function type, works on functions assigned to a variable
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Go
- Estrellas
- 111k
- Forks
- 14.3k
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 132
Descripción
TypeScript Version: 4.0.2, 4.1.0-beta
Search Terms:
asserts function
Code
interface LabelledFunction { label: string; }
function assignLabel(fn: () => unknown, label: string): asserts fn is LabelledFunction {
Object.assign(fn, { label });
}
function a() { }
assignLabel(a, 'a');
console.info(a.label); // Property 'label' does not exist on type '() => void'.(2339)
const b = function () { };
assignLabel(b, 'b');
console.info(b.label); // works as expected
const c = () => { };
assignLabel(c, 'c');
console.info(c.label); // works as expected
Expected behavior:
At least in runtime code coming after assignLabel(a, 'a');, a.label should be accessible.
Actual behavior:
Property 'label' does not exist on type '() => void'.(2339)
Playground Link: link
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
Comienza con la reproducción enlazada en TypeScript Playground y compara la función hoisted a con las funciones asignadas a variables b y c después de llamar a assignLabel. Sigue el comportamiento del comprobador de tipos para las funciones de aserción y confirma la finalización cuando a.label se acepte en el código posterior a la llamada sin hacer que dejen de funcionar los casos que ya funcionan.
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
- Tranquilo
- Claridad
- Bien especificado
- Aptitud para principiantes
- 48/100