#reactjs #typescript #interface #autocomplete #union
#reactjs #typescript #интерфейс #автозаполнение #объединение
Вопрос:
Я пытаюсь использовать реквизиты из (импортного) типа объединения и использовать их в компоненте react, чтобы конечный потребитель в конечном app
мог «фильтровать» их в автоматическом режиме и проверять.
Типы:
export type Clothes =
| Shirt
| Dress
| Pants
export interface Shirt {
size: "M" | "S";
name: "Shirt";
}
export interface Dress {
size: "XS";
name: "Dress";
}
export interface Pants {
size: "L" | "M" | "S";
name: "Pants";
}
Компонент React:
export const Clothe = (props: Clothes amp; {className?: string}) => {
return (
<div className={props.className}>
<span>{`${props.name} ${props.size}`}</span>
</div>
)
}
Потребительское приложение:
<Clothe name="Shirt" size="L" />
// this should be invalid
Clothe
должно быть только M
и S
в качестве размера из-за «имени», но объединение предоставляет мне все размеры на выбор ( L
, M
, S
, XS
)
Например, если я выберу неправильную комбинацию size
и name
реквизитов, это должно выдать ошибку ‘ts’.
Автозаполнение также должно отфильтровывать size
реквизит для определенного типа на основе того, какой name
реквизит выбран (и предпочтительно наоборот — чтобы size
реквизит фильтровал только все name
объекты такого размера).
Как этого добиться?
Комментарии:
1. поделитесь своим кодом
2.Вы должны опубликовать код в вопросе, а не просто ссылку. Но из того, что я вижу, это работает так, как ожидалось, если я копирую код локально, он выдает ошибку, если
name
size
комбинация недопустима.