【发布时间】:2022-04-08 01:30:58
【问题描述】:
你会如何在 typescript 中输入这些对象?
我有一个特殊的“日期时间”键,它是日期,其余键是数字。但我事先并不知道每个对象会设置哪些键。示例值:
type Metrics = ??????
const example1: Metrics = {
datetime: new Date(),
activity: 12.34,
min: 12.34,
max: 12.34,
}
const example2: Metrics = {
datetime: new Date(),
avg: 12.34,
}
这是我尝试过的:
type Metrics = {
datetime: Date,
[key: string]: number,
}
// ERROR on the type definition:
// Property 'datetime' of type 'Date' is not assignable to string index type 'number'
type Metrics = {
datetime: Date
} & {
[key: string]: number
}
// ERROR on the variable assignment:
// Type '{ datetime: Date; activity: number; min: number; max: number; }' is not assignable to type 'Metrics'.
// Type '{ datetime: Date; activity: number; min: number; max: number; }' is not assignable to type '{ [key: string]: number | null; }'.
// Property 'datetime' is incompatible with index signature.
// Type 'Date' is not assignable to type 'number'.
【问题讨论】:
-
您可以控制这些数据的格式吗?因为如果您将数字数据嵌套在其自己的对象中,其中 all 键都是数字,那么您的生活会轻松很多。
{ datetime: Date, data: { [key: string]: number } -
如果您为所有属性定义键,那么“日期时间”也需要完全匹配:
{ [key: string]: number | Date, datetime: Date } -
@AlexWayne 事实上我是这样做的,这就是目前正在实施的,但我希望有一个解决方案来简化我的数据格式。
-
@fard 是的,这就是我观察到的。但是我的指标键不能是日期,这种类型现在对于指标键是错误的。另外,我不能提前指定属性键,因为它们是从数据库中提取的
-
@ClémentPrévost 如果您可以指定所有属性:typescriptlang.org/play?#code/…
标签: typescript typescript-typings