add `IsNothing()` type guard
Les mainteneurs répondent en général sous 4 jours
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- typescript
- Domaine
- tooling
Piste de recherche
L’issue n’identifie aucun fichier source, fichier de test ni point d’entrée. Commencez donc par localiser le type Nothing existant et les tests associés aux types dans le dépôt. Vérifiez que le guard réduit une union string | Nothing | undefined comme décrit, et ajoutez des tests montrant les types de flux de contrôle attendus.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🚀 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.
- Langage dominant
- JavaScript
- Étoiles
- 29k
- Forks
- 905
- Merge moyen
- 3 j 16 h
- PR mergées (30 j)
- 22
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de immerjs/immer
-
Shrinking an array with `length =` and growing it back loses the patches for the truncated indicesPeut-être pris @RClaudiuM l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 4 jours
-
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
Les mainteneurs répondent en général sous 4 jours
-
Docs: Chinese (zh-CN) website translation is outdated vs English docsPeut-être à nouveau libre @lijiayou0728 l’a pris il y a 91 jours, et aucune pull request n’est ouverte. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
immerjs/immer#1242 · 5 commentaires ·
Les mainteneurs répondent en général sous 4 jours
-
Branding Drafts on Type levelOuvertequestion
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
Les mainteneurs répondent en général sous 4 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
immerjs/immer#1217 · 1 commentaire ·
Les mainteneurs répondent en général sous 4 jours
Toutes les issues de immerjs/immer
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Automattic/node-canvas#2633 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
capricorn86/happy-dom#2594 ·
Les mainteneurs répondent en général sous 1 jour
-
Decoding tag 1 (epoch date) with an 8-byte integer throws "Cannot mix BigInt and other types"Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 79/100
microsoft/monaco-editor#5575 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour