microsoft / microsoft/TypeScript
Simplify error messages against intersections of weak types
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
I spoke a bit with @sandersn about ways we can tackle the type madness issue (#14662). I noted that JSX scenarios are much more broadly applicable right now and are pretty prevalent given the sorts of type arithmetic we see a lot of in the React community. 😃
Problem: JSX optional attributes make errors too hard to read
interface FooProps {
name: string;
age: number;
}
class Foo extends React.Component<FooProps> {
constructor(props: FooProps) {
super(props)
}
render() {
const {name, age} = this.props;
return <div>I'm {name} and am {age} years old</div>;
}
}
// Type '{ blah: number; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Foo> & Readonly<{ children?: ReactNode; }> & Reado...'.
// Type '{ blah: number; }' is not assignable to type 'Readonly<FooProps>'.
// Property 'name' is missing in type '{ blah: number; }'.
<Foo blah={10} />;
Proposal
When doing relation checks against an intersection target, if a check fails, see if relating against the same type with weak types removed would result in the same outcome. If so, use that comparison when elaborating types.
The great part is that this actually solves a broader set of problems than just JSX.
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 de JSX en el issue y sigue las comprobaciones de relación de tipos para un objetivo de intersección con tipos débiles. Compara el diagnóstico actual con la comparación propuesta que elimina los tipos débiles; se considera terminado cuando el error de JSX se simplifica sin cambiar el resultado de la relación, mientras se siguen cubriendo los casos afectados más amplios.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- react, typescript
- Área
- compilers
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100