add `IsNothing()` type guard
Los mantenedores suelen responder en 4 días
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
El issue no identifica un archivo fuente, un archivo de pruebas ni un punto de entrada, así que primero localiza el tipo Nothing existente y sus pruebas relacionadas con tipos en el repositorio. Confirma que el guard estrecha una unión string | Nothing | undefined como se describe y añade pruebas que muestren los tipos de flujo de control esperados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
🚀 Feature Proposal
Add IsNothing() type guard that can exclude Nothing from a union type.
Motivation
The following does not work:
let x: string | Nothing | undefined
if (x === nothing) {
// x type should be `Nothing`
}
else {
// x type should be string
}
Since the Nothing type is implemented as a class, the x === nothing will not remove the Nothing type from the control flow analysis.
Adding a IsNothing() type guard will solve this problem.
Can this be solved in user-land code?
I can implement that easily in user-land, but this is a core concept of immer and IMO should live inside immer.
I can contribute to the project. Just want to know which file should I add the tests to.
- Lenguaje dominante
- JavaScript
- Estrellas
- 29k
- Forks
- 905
- Merge medio
- 3 d 16 h
- PR fusionados (30 d)
- 22
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
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.
Más de immerjs/immer
-
Shrinking an array with `length =` and growing it back loses the patches for the truncated indicesPosiblemente ocupada @RClaudiuM la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 4 días
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 4 días
-
Docs: Chinese (zh-CN) website translation is outdated vs English docsQuizá libre de nuevo @lijiayou0728 la tomó hace 91 días y no hay ningún pull request abierto. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
immerjs/immer#1242 · 5 comentarios ·
Los mantenedores suelen responder en 4 días
-
Branding Drafts on Type levelAbiertoquestion
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 4 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
immerjs/immer#1217 · 1 comentario ·
Los mantenedores suelen responder en 4 días
Todos los issues de immerjs/immer
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Automattic/node-canvas#2633 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
capricorn86/happy-dom#2594 ·
Los mantenedores suelen responder en 1 día
-
Decoding tag 1 (epoch date) with an 8-byte integer throws "Cannot mix BigInt and other types"Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
microsoft/monaco-editor#5575 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día