typescript - 为什么这个打字稿模板永远不会返回?
问题描述
正如在这个打字稿游乐场中看到的那样:
type FirstOrSecond<condition, T1, T2> = condition extends never ? T1 : T2
type foo = never extends never ? () => 'hi' : (arg1: never) => 'hi'
type wtf = FirstOrSecond<never, () => 'hi', (arg1: never) => 'hi'>
泛型FirstOrSecond
分配never
给wtf
变量,而明确定义foo
分配() => 'hi'
为类型。
为什么泛型会发疯?
解决方案
Distributive conditional types. This is intentional.
Usually applied workaround is to wrap types into single-member tuple in the condition:
type FirstOrSecond<condition, T1, T2> = [condition] extends [never] ? T1 : T2
推荐阅读
- ios - 您如何将右对齐的 UILabel 水平自动滚动到右侧?
- css - 使用最大宽度时不需要的空间
- c# - 为什么我按LMB时球会掉下来?
- prometheus - 可观察性:我们可以按标签过滤,然后在 prometheus 或任何指标后端服务器上聚合
- c - 如何启用长 gtk 菜单滚动?
- python - Geopandas 在读取 shp 文件时抛出驱动错误
- function-pointers - Ada 访问无参数过程“错误约定”
- spring-boot - 无法推断基本 url...springfox-swagger2 版本 2.9.2
- java - 如何使用 Javax Mail 处理 gmail App 密码
- math - 阶乘的素数分解