我正在尝试为股票价格的响应数据编写一个接口。
例如,当为Google请求特定日期范围内的股票价格时,我得到以下信息:
{
"daily_prices": {
"2019-05-10": {
"open": 1168.84,
"high": 1176.28,
"low": 1146.37,
"close": 1167.64
},
"2019-05-13": {
"open": 1145.24,
"high": 1151.97,
"low": 1125.5,
"close": 1136.59
},
"2019-05-14": {
"open": 1142.32,
"high": 1144.87,
"low": 1123.53,
"close": 1124.86
},
"2019-05-15": {
"open": 1122.55,
"high": 1178.3,
"low": 1121.4,
"close": 1170.8
}
}
}我想为此编写一个接口,但我不知道daily_prices对象中将存在多少个对象。我也不知道property会怎么样。
我想做这样的事情:
interface stockPrices {
daily_prices: {
SOME_KIND_OF_DATE: {
open: number,
high: number,
low: number,
close: number
}
}
}但我也不知道有多少对象会在daily_prices中。
有什么想法吗?
发布于 2020-05-08 00:32:39
为此,您可以使用indexable type,即{ [key: string]: ... }
interface StockPrices {
daily_prices: {
[key: string]: {
open: number,
high: number,
low: number,
close: number
} }
}请参阅TypeScript Playground示例。
考虑对嵌套接口进行抽象
如果你想要更好的可读性,你甚至可以抽象化嵌套接口:
interface StockPrice {
open: number,
high: number,
low: number,
close: number
}
interface StockPrices {
daily_prices: { [key: string]: StockPrice }
}请参阅TypeScript Playground上的示例。
使用Record<T, K>或通用帮助器类型
更好的是,您可以利用Record<> utility type (参见playground上的):
interface StockPrice {
open: number,
high: number,
low: number,
close: number
}
interface StockPrices {
daily_prices: Record<string, StockPrice>
}...or为此声明了一个通用的Dictionary接口(请参见playground上的
// For bigger projects, this can be stashed away as a generic util/helper type
type Dictionary<T> = { [key: string]: T };
interface StockPrice {
open: number,
high: number,
low: number,
close: number
}
interface StockPrices {
daily_prices: Dictionary<StockPrice>
}https://stackoverflow.com/questions/61662914
复制相似问题