typescript - 条件类型中的 boolean[] 扩展为 true[] | 错误的[]
问题描述
此条件类型尝试将类型参数U
转换为数组:
type MakeArray<U> = U extends boolean ? Array<U> : U;
但是,当通过时boolean
:
type T5 = MakeArray<boolean>;
结果是type T5 = true[] | false[]
。
我见过https://github.com/microsoft/TypeScript/issues/30029但这似乎处理承诺/返回值,并且理论上已在 TS 3.5 中修复。
即 AFAICT 那个问题是关于原语和分布在联合上,但我明确地检查了extends boolean
而不是像extends boolean | number | string
.
解决方案
答案可能有点晚了,但是如果像这样的数组,它可以通过推断类型参数来工作
type MakeArray<T, V = T> = T extends Array<infer V> ? T : Array<V>;
type TBoolean = MakeArray<boolean>; // boolean[]
type TBooleanArray = MakeArray<Array<boolean>>; // boolean[]
type TString = MakeArray<string>; // string[]
type TStringArray = MakeArray<Array<string>>; // string[]
推荐阅读
- r - 如何在计算每个组的平均值时删除 ddply 中的第 5 个和第 95 个百分位值
- javascript - 使用 Jest 模拟值的问题
- django - 为什么外键值不能是我的 Django 模型中的字符串?
- javascript - 增加滚动时显示导航栏,减少滚动时隐藏导航栏
- discord.js - 我在 json 中有一个数组,当我尝试使用以下代码访问它时,它有多个单词的错误。任何人都可以帮助修复代码
- c - 传递 main() 中计数的变量的值
- laravel - Laravel 8,从数据库中检索的图像 url 不返回图像
- python - 基于目标变量中标签数量的循环
- python - 我们如何将具有非对齐数据的 .txt 文件加载到 Python 中的数据框中
- r - 处理“
" R 中的日期时间对象 (POSIXct)