Typescript:如何从具有有限值的 const 获取可能的键?

问题描述 投票:0回答:1

我有以下代码:

export const mapLayers: Record<string, SomeObject> = {
  layer_a: {},
  layer_b: {}
} as const;

export type LayerId = keyof typeof mapLayers;

LayerId
将永远是
string
,而不是我所期望的
layer_a | layer_b
。 如果我删除
Record<string, SomeObject>
部分,它实际上确实有效。但随后我就失去了限制
mapLayers
值的可能性。如何获得正确的推断键以及“有限”值?

TS游乐场

typescript types type-inference
1个回答
2
投票

听起来像是

satisifes
运算符的情况:

export const mapLayers = {
  layer_a: {},
  layer_b: {}
} satisfies Record<string, SomeObject>;

这告诉 typescript 它应该严格推断类型(类似于

as const
,但不创建属性
readonly
)。此外,它还告诉打字稿,如果结果与
Record<string, SomeObject>

不兼容,您希望发生错误

有关

satisfies
的更多信息,请参阅此文档页面

© www.soinside.com 2019 - 2024. All rights reserved.