map
समारोह
सरणियों के लिए है, इसलिए मैं आपके products
को मान लूंगा आपके उदाहरण में कुंजी एक सरणी है और कोई वस्तु नहीं है।
सबसे पहले, मेरा सुझाव है कि यदि आपने पहले से नहीं किया है तो आप अपने उत्पादों की प्रतिक्रिया के लिए टाइप परिभाषाएं ठीक से लिखें
interface IProduct {
_id: string,
category: number,
gender: number,
title: string,
description: string,
price: number,
imageFileName: string,
createdAt: string,
updatedAt: string,
__v: number
}
interface IResponse {
_id: string;
products: IProduct[];
}
फिर, Pick
. पाने के लिए एक ही product
. पर काम करना ऑब्जेक्ट, आप IResponse
. को अनुक्रमित कर सकते हैं अनुक्रमित पहुंच प्रकार
का उपयोग करके इंटरफ़ेस . आप product
चाहते हैं index
. पर संपत्ति क्योंकि यह एक सरणी है।
/*
Indexed Access Types
type Person = { age: number, name: string }[];
type Age = Person[number]["age"];
*/
type Products = ReadonlyArray<
Pick<
IResponse["products"][number],
"_id" | "gender" | "title" | "description" | "price" | "imageFileName"
>
>;
अगर आपको Pick<IResponse["products"], '_id'...>
जैसा कुछ करना हो तो आप Pick
. का उपयोग करने का प्रयास कर रहे होंगे एक सरणी से गुण निकालने के लिए, जिसके परिणामस्वरूप एक त्रुटि होगी।
और केवल एक चीज बची है वह है प्रतिक्रिया से वांछित वस्तु आकार में उत्पादों को मैप करना।
// Query your products
const { products }: IResponse = {
_id: "611e2febb863ce74ac448220",
products: [
{
_id: "6116a9ecc3e98d500c5e523d",
category: 5,
gender: 1,
title: 'sivdosi',
description: 'oisbdvoi',
price: 2394,
imageFileName: 'http://localhost:3000/images/1628875244435-3564.png',
createdAt: "2021-08-13T17:20:44.472Z",
updatedAt: "2021-08-13T17:20:44.472Z",
__v: 0
}
]
}
// Get the desired object
const pickedProducts: Products = products.map(({ _id, gender, title, description, price, imageFileName }) => ({
_id,
gender,
title,
description,
price,
imageFileName
}));
अंतिम परिणाम कुछ इस तरह दिखता है
interface IProduct {
_id: string,
category: number,
gender: number,
title: string,
description: string,
price: number,
imageFileName: string,
createdAt: string,
updatedAt: string,
__v: number
}
interface IResponse {
_id: string;
products: IProduct[];
}
type Products = ReadonlyArray<
Pick<
IResponse["products"][number],
"_id" | "gender" | "title" | "description" | "price" | "imageFileName"
>
>;
// Query your products
const { products }: IResponse = {
_id: "611e2febb863ce74ac448220",
products: [
{
_id: "6116a9ecc3e98d500c5e523d",
category: 5,
gender: 1,
title: 'sivdosi',
description: 'oisbdvoi',
price: 2394,
imageFileName: 'http://localhost:3000/images/1628875244435-3564.png',
createdAt: "2021-08-13T17:20:44.472Z",
updatedAt: "2021-08-13T17:20:44.472Z",
__v: 0
}
]
}
// Get the desired object
const pickedProducts: Products = products.map(({ _id, gender, title, description, price, imageFileName }) => ({
_id,
gender,
title,
description,
price,
imageFileName
}));