typescript - 如何在 TypeScript 中键入提示特定的常量字符串?
问题描述
我有一个从对象中检索存储值的 getter 函数。还有一个 setter 设置一个新值。
type IObjectType = {
APP_ENV: string;
APP_CONFIG: string;
[key: string]: string;
};
const object: IObjectType = {
APP_ENV: '10',
APP_CONFIG: 'configString',
};
function get(key: string): any {
return object[key];
}
我希望 Typescript 提示对象的常量键,如下所示。
在上图中,我更改了get
参数的类型,以获得提示。我想要的是get
接受任何string
作为参数并显示提示的函数,如果它是像APP_ENV
or这样的强制键APP_CONFIG
。
我尝试了联合运算符
function get(key: "APP_ENV" | "APP_CONFIG" | string): any {
return object[key];
}
由于 TypeScript 将签名评估为字符串,因此上述内容不起作用。
有什么解决办法吗?当有大量强制键时,适当的提示会非常有用。
解决方案
当然,这取决于您的 IDE,但使用重载可能会有所帮助:
function get (key: 'APP_ENV' | 'APP_CONFIG'): any
function get (key: string): any
function get (key: string): any {
// code
}
推荐阅读
- javascript - element.classList.contains() 等于未定义。为什么?
- javascript - 如何使用 promise 执行函数并通过 API 调用多次检查其值并使用该值执行另一个函数?
- matlab - 为什么在MATLAB中对fft2得到的图像的频谱进行移位、取绝对值和对数变换?
- flutter - 如何通过云函数将图像存储在 Firebase 存储中
- c - 打印链表总是打印最后一个节点
- java - 为什么Java递归代码不能正常工作?返回错误输出
- c# - 具有超过 1 个条件/条件类型 C# 的 while 循环条件
- python - 将 NxD 时间序列数据集转换为 (N-T+1)xTxD 的最佳方法?
- c++ - 随着时间的推移测量和绘制事件数量
- sql - 如何按彼此接近的时间戳对 SQL 表进行分组?