【发布时间】:2020-08-06 03:06:57
【问题描述】:
我希望将对象的可分配类型限制为特定类型。例如,所有键都必须具有number 值的对象,如下所示:
interface NumberMap {
[key: string]: number;
}
这适用于执行值限制,但是我将无法确定 map 变量中实际存在哪些键。
const map: NumberMap = {
one: 1,
two: 2,
three: 3,
};
// no error, but incorrect, this key does *not* exist
const lol = map.weoiroweiroew;
// Also cannot do this
type MyKeys = keyof map;
有没有办法在不丢失实现该签名的对象所具有的密钥信息的情况下强制执行索引签名?
【问题讨论】:
-
我在编译时而不是运行时需要密钥
-
您的评论没有回答我的问题。如果我这样做,则没有价值限制。
-
@JonasLochmann 他想确保对象文字的类型扩展了接口,但也获得了对象文字的实际类型
标签: typescript