【问题标题】: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 };
    

    注意可选场景中的?

    希望这对您有所帮助。干杯? !!!

    【讨论】:

    • 谢谢大家 ;) Eranga Heshan ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 2021-09-20
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多