通用类型索引。TS2536:类型“字符串”不能用于索引类型“T”

将是

如果您能建议键入以下方法的正确方法,我将不胜感激:

interface TestT {
    [index: string]: any
}

function _defaultUpdateStateMutation<T extends TestT> (
    state: T,
    options: {
        value: Object,
        valueName: string
    }
) {
    const { value, valueName } = options

    // TS2536: Type 'string' cannot be used to index type 'T'.
    if (valueName) {
        state[valueName] = value
    } else if (value) {
        Object.keys(value).forEach(valueName => {
            state[valueName] = value[valueName]
        })
    }
}

打字稿游乐场

阿里雷扎·艾哈迈迪

你必须告诉ts编译器这valueName是 T 的关键:

并且还转换Object.keys(value)Array<keyof T>

function _defaultUpdateStateMutation<T extends TestT> (
    state: T,
    options: {
        value: any,
        valueName: keyof T
    }
) {
    const { value, valueName } = options

    if (valueName) {
        state[valueName] = value
    } else if (value) {
        (Object.keys(value) as Array<keyof T>).forEach(valueName => {
            state[valueName] = value[valueName]
        })
    }
}

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TS2536:类型“ keyof T2”不能用于索引类型“ T1”

TS2536:类型不能用于索引类型 ENUM - TS MAPPED TYPES

类型'string'不能用于索引类型'T'.ts(2536)

TS2536:即使类型必须是键,也不能用作索引?

字符串不能用于索引类型“ T”

“字符串”不能用于索引类型“ {}”

打字稿 - “字符串”类型的表达式不能用于索引类型

内插字符串类型不能用于索引与键类型相同的记录

“字符串”类型的表达式不能用于索引类型

打字稿错误:“字符串”类型的表达式不能用于索引类型

TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“User_Economy”类型

错误 TS7053:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“模块类型”

元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引类型A

模板文字键具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

打字稿:“字符串”不能用于索引复杂对象上的类型

类型“ test”不能用于索引类型“ T”

类型 'string' 不能用于索引类型 'Partial<T>

元素隐式具有“任意”类型,因为类型“字符串”的表达式不能用于索引

元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引“类型”类型

不能用字符串类型的索引下标NSDictionary类型的值

元素隐式具有 'any' 类型,因为类型 'string' 的表达式不能用于索引类型 {"1" : { "key": string}; "2" : { "key": 字符串};}

TypeScript:元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

反应打字稿错误 - 元素隐式具有任何类型,因为类型字符串的表达式不能用于索引类型 {}

Angular - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型

如何修复元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型?

Typescript:类型'undefined'不能用作索引类型.ts(2538)

打字稿:从嵌套的全局对象访问值 | 键入“字符串”不能用作索引类型

打字稿泛型类型 - 类型“keyof T1”不能用于索引类型

类型“键”不能用于索引 TypeScript 中的类型“对象”