gpt4 book ai didi

typescript - 如何告诉 TypeScript 我的函数参数是 Enum 键?

转载 作者:行者123 更新时间:2023-12-04 11:18:02 26 4
gpt4 key购买 nike

我有一个将 HTTP 状态映射到其代码的枚举,如下所示:

enter image description here

我可以通过访问它们的 key 轻松获取这些代码(注意 IntelliSense 如何在右侧面板上显示 HttpStatus.NOT_FOUND = 404)

enter image description here

现在假设我有一个名为 sendStatus 的函数:

我应该如何键入此函数才能让 IntelliSense 自动完成这些代码?

enter image description here

使用 keyof typeof不起作用,因为它不会自动完成枚举值。

最佳答案

你想要的不是直接可能的。当您这样做时keyof typeof您创建联合类型 'CREATED' | 'OK' | 'NOT_FOUND' ...这与曾经的枚举完全分开。

你能得到的最接近的是做

function sendStatus(code: HttpStatus) {
// code
}

send(HttpStatus.OK) // This will autocomplete and show the status code numbers

然后将代码转换为 sendStatus 中的字符串功能。

在不知道您正在寻找的确切用法的情况下很难说出您真正想要什么,但我会考虑只使用一个普通的旧对象而不是枚举
const HTTP_STATUS = {'OK':200, 'CREATED':201} as const
然后,如果需要,您也可以像这样创建这两种类型
type StringStatus = keyof typeof HTTP_STATUS // 'OK' | 'CREATED'
type NumsStatus = (typeof HTTP_STATUS)[keyof typeof HTTP_STATUS] // 200 | 201

通常很少有充分的理由使用 enum s 在现代 TS 中。通常对象和/或联合类型可以更好地完成这项工作。

关于typescript - 如何告诉 TypeScript 我的函数参数是 Enum 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61218031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com