如果您能建议键入以下方法的正确方法,我将不胜感激:
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] 删除。
我来说两句