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>
}