add `IsNothing()` type guard
维护者通常 4 天内回复
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 35/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- typescript
- 领域
- tooling
调研方向
该 issue 未指出源文件、测试文件或入口点,因此首先在仓库中找到现有的 Nothing 类型及其类型相关测试。确认 guard 会按描述缩小 string | Nothing | undefined 联合类型,并添加展示预期控制流类型的测试。
由索引模型根据 Issue 内容生成。
描述
🚀 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.
- 主要语言
- JavaScript
- 星标
- 29k
- 派生
- 905
- 平均合并
- 3 天 16 小时
- 30 天内合并 PR
- 22
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
immerjs/immer 的其他 Issue
-
Shrinking an array with `length =` and growing it back loses the patches for the truncated indices可能已有人在做 @RClaudiuM 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 4 天内回复
-
难度 3/5 1-2 天 新手友好度 35/100
维护者通常 4 天内回复
-
Docs: Chinese (zh-CN) website translation is outdated vs English docs可能重新可做 @lijiayou0728 于 91 天前认领,目前没有进行中的 PR。 未关闭
难度 4/5 3-5 天 新手友好度 55/100
维护者通常 4 天内回复
-
question
难度 5/5 一周以上 新手友好度 35/100
维护者通常 4 天内回复
-
难度 5/5 一周以上 新手友好度 35/100
维护者通常 4 天内回复
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 76/100
Automattic/node-canvas#2633 ·
-
难度 2/5 1-3 小时 新手友好度 78/100
capricorn86/happy-dom#2594 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 79/100
microsoft/monaco-editor#5575 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 84/100
维护者通常 1 天内回复