typescript - 索引签名参数类型必须是 'string' 或 'number' 错误

标签 typescript object types

<分区>

当我在 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 };

注意可选场景中的 ?

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

关于typescript - 索引签名参数类型必须是 'string' 或 'number' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67647346/

相关文章:

javascript - 使用自调用匿名函数

javascript - 将参数传递给 forEach.call 中的函数

javascript - 如何获取数组的键或属性值

go - 带 slice 结构的隐式类型

python - mypy 错误 - 尽管使用了 'Union',但类型不兼容

typescript - 使用 CDK 将文件上传到 S3 存储桶

javascript - 警报不是功能错误是控制台

typescript - 包含对象数组的 Vue 响应式对象

C 中的完整类型到不完整类型 : C11 standard

javascript - 在模板 Web 组件中实现框架