【发布时间】:2020-12-22 16:25:44
【问题描述】:
我们目前正在对旧代码库执行严格的 null 检查,并自己构建了帮助器
type Maybe<T> = T | null | undefined
我们实现了几个辅助函数,它们可能看起来像这样:
function isSafe<T>(val: Maybe<T>): val is T {
// ...
}
就像一个魅力,我想要的一个改进是,防止非可能值作为参数传递,因为通过这种类型,可以调用isSafe('hi'),这不能null,对于每个未包含在 Maybe 中的变量都是如此。
防止这样的调用会消除误解,因为我希望传递给isSafe 的变量是Maybe。
遗憾的是,我还没有找到实现此目的的方法,因为 T | null | undefined 允许这些类型中的任何一种,而不仅仅是这三种类型的组合。
在将非Maybe 值传递给函数时,有没有办法实现类型错误?
如果它也允许 T | null 和 T | undefined ,则奖励积分将是我们在内部决定我们将处理这两个值相同。
【问题讨论】:
标签: typescript typescript-typings typescript-generics