首页 > 解决方案 > 如何限制 Typescript 索引签名的键

问题描述

我有一个映射键值对的对象文字。是否可以将索引签名密钥限制为预定义值的范围?

我尝试了以下方法,但使用未指定的键“c”时没有抛出错误:

let foo: { [key in 'a' | 'b']: any };

foo['c']; // no error

更新:

上面的例子在使用“noImplicitAny”时会抛出一个错误(见下面的评论)。

在我的代码中,我实际上使用的是变量而不是硬编码值,所以(我猜)Typescript 无法提前知道是否允许给定值:

let foo: { [key in 'a' | 'b']: any };

foo[someDynamicKey]; // no error

标签: javascripttypescripttypesindex-signature

解决方案


推荐阅读