【问题标题】:An index signature parameter type must be either 'string' or 'number' error [duplicate]索引签名参数类型必须是“字符串”或“数字”错误[重复]
【发布时间】:2021-08-11 07:11:12
【问题描述】:
当我在 Typescript 上创建这种类型时:
type TYPE_STORAGE<T extends { [k: string]: any }> = { [k: keyof T | 'all']: number };
或
type TYPE_STORAGE_2<T> = { [k: keyof T | 'all']: number };
解析器回答我,
An index signature parameter type must be either 'string' or 'number'
我不明白,这对我说了什么。感谢您的回答!
【问题讨论】:
标签:
typescript
object
types
【解决方案1】:
你要找的是这个:
// TYPE_STORAGE
type TYPE_STORAGE<T extends { [k: string]: any }> = { [k in keyof T | 'all']: number };
// TYPE_STORAGE_2
type TYPE_STORAGE_2<T> = { [k in keyof T | 'all']: number };
如果您的所有属性都是可选的,那么:
// TYPE_STORAGE
type TYPE_STORAGE<T extends { [k: string]: any }> = { [k in keyof T | 'all']?: number };
// TYPE_STORAGE_2
type TYPE_STORAGE_2<T> = { [k in keyof T | 'all']?: number };
注意可选场景中的?。
希望这对您有所帮助。干杯? !!!