активным и у него разные пропы приходят в зависимости от этого.
Примерный код для референса:
interface GeneralProps {
title: string;
description: string;
status: never;
date: never;
active: never;
}
interface ActiveProps {
title: string;
status?: string;
date?: string;
active: true;
description: never;
}
type Props = GeneralProps | ActiveProps;
Правильно ли я типизирую для моего кейса? И главный вопрос, правильно ли здесь будет использовать тайпгард с проверкой на active (типа isActive = (props: Props) = props is ActiveProps) или есть какой то способ лучше?
Кажется, тут нужен discriminated union
спасибо, почитаю
мне кажется, мне не совсем подходит ну или может я что то не так делаю там (https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html#discriminating-unions) всегда есть state, который чекается, а у меня active только в одном случае существует
я вот такой тайпгард сделал, но проблема в том, что у меня active существует только в ActiveProps, соответственно тс ругается, что active doesnt exist. Если я пишу (props as ActiveProps).active, то тс перестает ругаться, но в таком случае тс-еслинт уже пишет, что active === true и как бы зачем вообще проверка const isActive = (props: Props): props is ActiveProps => { return props.active !== undefined; };
Обсуждают сегодня