Я создаю службу корзины покупок, которая использует метод для добавления переданного объекта JSON к объекту корзины. Но должны быть заполнены только определенные поля в интерфейсе IProduct.
JSON Object
{
"title": "Title 1",
"descriptionHtml": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore.",
"vendor": "1",
"variants": [
{
"id": "aaaa",
"price": "12.95",
"quantity": "1"
}
],
"images": [
{
"transformedSrc": "https://path/to/image"
}
],
"filters": [
"Pizza"
],
"ratings": "1321"
}
import { Injectable } from '@angular/core';
export interface IProduct {
title: string;
descriptionHtml: string;
vendor: string;
variants?: (VariantsEntity)[] | null;
images?: (ImagesEntity)[] | null;
}
export interface VariantsEntity {
id: string;
price: string;
quantity: string;
}
export interface ImagesEntity {
transformedSrc: string;
}
@Injectable({
providedIn: 'root'
})
export class CartService
{
cart: IProduct[] = [];
constructor() { }
setProduct(product)
{
this.cart.push(product);
}
}
Использование this.cart.push(product)
толкает весь JSON объект. Но мне не нужны такие поля, как «фильтры», «рейтинги».
Существует ли возможность с Typescript создавать только действительные поля интерфейса?
РЕДАКТИРОВАТЬ: Какие возможности у меня есть здесь?