[英]How to define a named array of objects in an interface with TypeScript?
如何在帶有TypeScript的接口中定義restaurants
屬性?
let test = {
user_id: 5,
restaurants: [
{
restaurant_id: 5,
restaurant_rank: 5
},
{
restaurant_id: 6,
restaurant_rank: 6
}
],
timestamp: 'test'
};
我查看了以下問題,但沒有一個解決了我的問題:
我寫的方式是這樣的:
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'
};
還有其他幾種方法可以執行數組:
interface IThing {
user_id: number;
timestamp: string;
restaurants: IRestaurant[];
}
interface IThing {
user_id: number;
timestamp: string;
restaurants: Array<{restaurant_id: number, restaurant_rank: number}>;
}
我在您回答的答復中注意到您執行restaurant_details: Object
。 您應該做restaurant_details: any
因為Object比任何對象都更具限制性。 參見https://stackoverflow.com/a/18961904/2592233
我還在restaurant_details
之后添加一個問號,以告訴編譯器這是可選的,因為在第一個示例中沒有。
interface InterfaceName {
user_id: number,
restaurants: { [index: number]: { restaurant_details: Object, restaurant_rank: number } },
timestamp: Date
}
但是,我發現它沒有被檢測為數組,因此一個更簡單的解決方案是:
interface InterfaceName {
user_id: number,
restaurants: { restaurant_details: Object, restaurant_rank: number }[],
timestamp: Date
}
這樣做將允許TypeScript編譯器將InterfaceName.restaurants
正確地視為array
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.