当我在 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'
我不明白,这对我说了什么。感谢您的回答!
你要找的是这个:
// 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 };
注意可选场景中的 ?
。
希望对您有所帮助。干杯🍻!!!