Typescript 如果我';I’我不知道这些钥匙叫什么名字?
我正试图为股票价格的响应数据编写一个接口 例如,当我为谷歌请求特定日期范围内的股票价格时,我得到以下信息:Typescript 如果我';I’我不知道这些钥匙叫什么名字?,typescript,interface,Typescript,Interface,我正试图为股票价格的响应数据编写一个接口 例如,当我为谷歌请求特定日期范围内的股票价格时,我得到以下信息: { "daily_prices": { "2019-05-10": { "open": 1168.84, "high": 1176.28, "low": 1146.37, "close": 1167.64 }, "2019-05-13": { "open": 1145.24, "high":
{
"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\u prices
对象中会存在多少对象。我也不知道属性将是什么
我想这样做:
interface stockPrices {
daily_prices: {
SOME_KIND_OF_DATE: {
open: number,
high: number,
low: number,
close: number
}
}
}
但是我也不知道有多少物品会在每日价格中
有什么想法吗?您可以使用,例如,{[key:string]:…}
:
interface StockPrices {
daily_prices: {
[key: string]: {
open: number,
high: number,
low: number,
close: number
} }
}
参见示例
考虑嵌套接口的抽象
如果想要更好的可读性,甚至可以抽象嵌套接口:
interface StockPrice {
open: number,
high: number,
low: number,
close: number
}
interface StockPrices {
daily_prices: { [key: string]: StockPrice }
}
请参见上的示例
使用记录
或通用助手类型
更好的是,您可以利用(请参见上的):
任意键的接口就是{[key:string]:value}
,我没有意识到我需要的是任意键。非常感谢。谢谢你的详细解释。我甚至不能理解这个问题,但你已经有了一个惊人的答案。我已经使用typescript一年多了,但我并不知道它们被称为可索引的:)我不知道我需要的是任意键。非常感谢。@CiBoz谢谢你的客气话。@judgejab很高兴能帮忙:)
interface StockPrice {
open: number,
high: number,
low: number,
close: number
}
interface StockPrices {
daily_prices: Record<string, StockPrice>
}
// 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>
}