打字稿如何从接口声明嵌套的数据类型



i具有以下打字稿接口:

interface IFoodShop {
    name: string;
    owner: string;
    foods: Array<{
        id: number,
        name: string,
        isVegetarian: boolean
    }>
}

i具有一个函数,该函数要求Paramater与Interface IfoodShop的食物阵列相同。我将如何宣布它,类似于此事,而这种情况不起作用。

// check if food is vegetarian
isVegatarianFood(data: IFoodShop.foods) {

}

我知道我可以分解以下数据类型:

interface IFoodShopFood {
    id: number,
    name: string,
    isVegetarian: boolean
}
interface IFoodShop {
    name: string;
    owner: string;
    openDate: Date;
    foods: IFoodShopFood
}
// check if food is vegetarian
isVegatarianFood(data: IFoodShopFood) {

}

,当我有很多阵列要声明时,这对我来说似乎是不必要的。我如何简单地说数据类型需要匹配嵌套接口数据类型食物?

但是,当我有很多阵列要声明时,这似乎是不必要的。

您可以使用以下语法(其称为A 查找类型):

interface IFoodShop {
    name: string;
    owner: string;
    foods: Array<{
        id: number,
        name: string,
        isVegetarian: boolean
    }>
}
// check if food is vegetarian
function isVegatarianFood(data: IFoodShop['foods']) { }
isVegatarianFood([{ id: 123, name: '123', isVegetarian: true }]); // okay
isVegatarianFood([{ id: 123, name: '123', isVegetarian: 'ERRROR' }]); // ERROR

最新更新