node.js - 如何在 TypeScript 中通过索引访问通用对象的属性?

标签 node.js typescript generics typescript-generics index-signature

我有以下函数,可以遍历对象的所有属性并将它们从 ISO 字符串转换为日期:

function findAndConvertDates<T>(objectWithStringDates: T): T {

    for (let key in Object.keys(objectWithStringDates)) {

        if (ISO_REGEX.test(objectWithStringDates[key])) {
            objectWithStringDates[key] = new Date(objectWithStringDates[key]);

        } else if (typeof objectWithStringDates[key] === 'object') {
            objectWithStringDates[key] = findAndConvertDates(
                objectWithStringDates[key]
            );
        }
    }
    return objectWithStringDates;
}

TypeScript 不断告诉我 Element 隐式具有“any”类型,因为类型“{}”没有索引签名 - 指的是 objectWithStringDates[key] 的众多实例。

考虑到该对象作为通用对象传入,我将如何设置在没有显式索引签名的情况下访问这些属性?

(否则我如何提供索引签名或抑制此错误?)

谢谢!

最佳答案

您可以像这样创建可索引签名:

function findAndConvertDates<T extends { [key: string]: any }>(objectWithStringDates: T): T {

关于node.js - 如何在 TypeScript 中通过索引访问通用对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237562/

相关文章:

typescript - 如何声明必须可为空或未定义的类型

用于处理 Class.<GenericType>method() 调用的 Javac 标志和 Eclipse 设置

c# - 从 GenericClass<T> 访问静态方法,其中 T 由 Type 实例给出

javascript - 我可以使用 pactjs 来测试通过事件流和消息队列进行通信的微服务吗?

javascript - Grunt 在任务执行之间执行自定义脚本

node.js - 播种对象时的钩子(Hook)

c# - 使用委托(delegate)表示法访问通用列表

javascript - 使用 Node child_process 的标准输出缓冲区问题

typescript - 错误 : Failed to complete negotiation with the server: Error: Not Found

根据要求分配类(class)的算法