Я использую экспериментальные декораторы с TypeScript в React.
Библиотека, которую я использую для форм - из Ant Design, и декоратор вставляет свойство form
в мой компонент.
У меня есть объявление Component
, подобное этому:
interface IProps {
form: any
}
@Form.create()
class Component extends React.Component<IProps> { ... }
Теперь, когда я хочу использовать этот компонент без свойства form
, вот так
<Component/>
Я получаю следующую ошибку TS
TS2769
Никакая перегрузка не соответствует этому вызову.
Перегрузка 1 из 2, '(props: Readonly): Component', выдала следующую ошибку. Свойство 'form' отсутствует в типе '{}', но требуется в типе 'Readonly'.
Перегрузка 2 из 2, '(props: IProps, context ?: any): Component', возникла следующая ошибка,Свойство 'form' отсутствует в типе '{}', но требуется в типе 'Readonly'.
Теперь я могу просто сделать свойство form
необязательным с пометкой ?
, но это нехорошо, и когда я хочу еще больше набрать form
, например
interface IFields {
"name": string;
}
interface IProps extends FormComponentProps<IFields> { ... }
это действительно становится неосуществимым.
Как мне сказать TypeScript, что свойство form
вводится через декоратор?