typescript - 具有不能是自身的泛型类型的打字稿类
问题描述
是否可以防止嵌套使用具有泛型类型参数的类,即Optional<Optional<string>>
?示例类:
export default abstract class Optional<T> {
abstract get hasValue(): boolean
abstract get value(): T
static of<U>(value: U): Optional<U> { return new FilledOptional<U>(value) }
static empty<U>(): Optional<U> { return new EmptyOptional<U>() }
}
这个抽象类没有构造函数来限制实例的创建。FilledOptional
和使用的EmptyOptional
类of
的确切实现empty
似乎并不相关。
这是无效的:class Optional<T extends Optional<unknown> ? never : T>
。
有没有办法在全局类级别上实际做到这一点,或者我只需要用类似的类型约束来装饰这个类和相关类中的每个可能的方法参数?
刚才我意识到instanceof
在方法中进行一些检查的可能性of
,但这对方法没有帮助empty
。
或者,最好让这个类以任何可能的方式使用,即使(在我看来)直接嵌套Optional
现在是我想在代码库中避免的反模式。
解决方案
推荐阅读
- python - Python将10位日期转换为时间戳
- reactjs - react-native 如何根据点击的手风琴从状态中收集不同的属性?
- pygame - 我正在尝试为我的班级项目制作一个简单的 Pygame。我无法让 Pygame 导入我的照片
- firebase - Flutter 和 Firebase 消息传递:从通知中提取数据
- php - SELECT * FROM Comicinfo WHERE ComicTitle LIKE '%%' AND Genre LIKE Genre=CrimeDatabase 访问失败:'where 子句'中的未知列'Crime'
- debugging - 通过“breakpoint()”函数打开 Visual Studio 代码调试器模式
- snmp - 为什么我不能使用 snmptable 在 net-snmp 中搜索 mib 表?
- spring - Spring批处理每批处理创建一个新的日志文件
- python - 使用 Seaborn 绘制条形图颜色
- apache - .htaccess 重定向桌面但不适用于移动浏览器