typescript - 从对象文字自动推断的记录类型(例如`uknown`)
问题描述
在打字稿中,我可以将对象文字保持为无类型,以便自动推断类型,或者我可以指定一个类型(例如Record
),以便在文字上强制执行该类型。-- (1)
我想强制执行Record<unknown, A>
,以便可以从文字中推断出属性(作为联合类型,如"prop1" | "prop2" | "prop3"
),并对值进行类型检查A
。
即我想要求打字稿在(1)中的每种情况下做一半的事情。
这可能吗?Record<unknown, A>
抱怨而不是推断未知的类型
TS2344: Type 'unknown' does not satisfy the constraint 'string | number | symbol'. Type 'unknown' is not assignable to type 'symbol'.
在此打字稿游乐场链接上查看最小复制品
解决方案
这需要部分类型推断,Typescript 还没有。
这里的一种解决方案是让 TS 推断类型,然后验证记录值的类型,即。就像是
const obj = {
prop1: 'foo',
prop2: 42,
prop3: true
}
function fun<Keys extends string>(input: Record<Keys, string | number>) {}
fun(obj) // error: boolean not an accepted value
推荐阅读
- vb.net - 如何在 vb.net 中创建快捷方式/热键?
- jquery - 如果 li 中包含某个类的元素,如何让 li 删除自身?
- c++ - c++ 链表不再占用 Ram 空间?
- calendar - 如何从输入类型日期的日历页脚中删除“今天”
- python - Plotly:如何在 Choropleth 地图上显示州线
- javascript - Chrome 和服务器之间的 QUIC 通信
- javascript - 如何将数组从 NodeJS 传递到 Python 脚本?
- rust - `push label` 推送 [label],而不是 label 的地址(Rust asm!)
- node.js - Keep failing passing arrays to axios.get request to retrieve data from Mongoose
- c# - WPF 并行运行多个任务(selenium webdrivers)无法正常工作