У меня контент для поста хранится в виде JS объекта. Помимо разных titlt, description, и т.д. есть поле в котором хранится контент. Контент может быть разных типов: "text" | "video" | "header" | "code" | "images" | "remark" | "materials".
В данный момент у меня все реализовано примерно так:
export interface Post {
title: string;
content: [Content]
}
export interface Content {
type: "text" | "video" | "header" | "code" | "images" | "remark" | "materials";
}
export interface ITextContent extends Content {
value: string;
}
// ...
const items:Post = {
title: "foo bar",
content: [
{type: "text", value: "lorem 1"},
{type: "video", url: "lorem 2"},
{type: "text", value: "lorem 3"}
// ...
]
};
const onlyTextType:ITextContent[] = items.content.filter(({type}) => type === "text");
// ...
Когда я пытаюсь "уточнить" тип содержимого, получаю предупреждение от редактора:
Тип "Content[]" не может быть назначен для типа "ITextContent[]".
Свойство "value" отсутствует в типе "Content" и является обязательным в типе "ITextContent".ts(2322)
index.ts(31, 2): Здесь объявлен "value".
Подскажите пожалуйста как устранить ошибку? Есть подозрение, что я в принципе выбрал неправильный подход к "разметке типов" для контента, если так буду признателен за наставление на путь истины или хотя бы ссылку в каком направлении копать.