如何使用 TypeScript 在接口中定义命名的对象数组?

Yoh*_*nna 8 arrays node.js typescript

如何restaurants在 TypeScript 的接口中定义属性?

let test = {
  user_id: 5,
  restaurants: [
    {
      restaurant_id: 5,
      restaurant_rank: 5
    },
    {
      restaurant_id: 6,
      restaurant_rank: 6
    }
  ],
  timestamp: 'test'
};
Run Code Online (Sandbox Code Playgroud)

笔记

我查看了以下问题,但没有一个解决了我的问题:

如何使用 Typescript 为对象数组定义接口?

如何在打字稿中定义对象数组?

cod*_*elt 8

我的写作方式是这样的:

interface IRestaurant {
    restaurant_id: number;
    restaurant_rank: number;
    restaurant_details?: any;
}

interface IThing {
    user_id: number;
    timestamp: string;
    restaurants: Array<IRestaurant>;
}

const test: IThing = {
    user_id: 5,
    restaurants: [
        {
            restaurant_id: 5,
            restaurant_rank: 5
        },
        {
            restaurant_id: 6,
            restaurant_rank: 6
        }
    ],
    timestamp: 'test'
};
Run Code Online (Sandbox Code Playgroud)

还有其他几种方法可以执行数组:

interface IThing {
    user_id: number;
    timestamp: string;
    restaurants: IRestaurant[];
}

interface IThing {
    user_id: number;
    timestamp: string;
    restaurants: Array<{restaurant_id: number, restaurant_rank: number}>;
}
Run Code Online (Sandbox Code Playgroud)

我在你的回答中注意到你做了restaurant_details: Object。你应该这样做,restaurant_details: any因为 Object 比任何东西都更具限制性。见/sf/answers/1327333311/

我还在后面添加了一个问号restaurant_details,告诉编译器这是可选的,因为您在第一个示例中没有。