Как исправить ошибку "Type '{}' отсутствует в следующих свойствах ..." в Typescript? - PullRequest
1 голос
/ 03 апреля 2019

Я новичок в Typescript, поэтому у меня возникла проблема. Я использую Ant Design и следил за тем, как использовать Form в Typescript, но с FunctionComponent; Тем не менее, я получаю сообщение об ошибке Typescript:

TypeScript error: Type '{}' is missing the following properties from type 'Readonly<RcBaseFormProps & Pick<SetupFormProps, "username" | "email" | "password" | "confirm_password" | "first_name" | "last_name">>': username, email, password, confirm_password, and 2 more. TS2740

Вот код:

import React, { useState } from 'react';
import { Form, Input, Row, Col } from 'antd';
import { FormComponentProps } from 'antd/lib/form';


interface SetupFormProps extends FormComponentProps {
  username: string;
  email: string;
  password: string;
  confirm_password: string;
  first_name: string;
  last_name: string;
}

const SetupForm: React.FC<SetupFormProps> = ({ form }) => {
  ...
  return (
    <Form id="setup-form" layout="vertical" onSubmit={handleSubmit}>...</Form>
  )
}

export default Form.create<SetupFormProps>({ name: 'register' })(SetupForm);

и в моем другом компоненте я обращаюсь к нему следующим образом:

import SetupForm from './form';

<SetupForm />

1 Ответ

1 голос
/ 03 апреля 2019

Все реквизиты в вашем интерфейсе реквизитов являются обязательными (они не могут быть определены)

interface SetupFormProps extends FormComponentProps {
  username: string;
  email: string;
  password: string;
  confirm_password: string;
  first_name: string;
  last_name: string;
}

Но вы используете свой компонент без указания реквизита из интерфейса

<SetupForm />

Таким образом, вы должны указать реквизиты из интерфейса (SetupFormProps)

<SetupForm username="myUserName" ...etc />

или сделайте реквизит необязательным

interface SetupFormProps extends FormComponentProps {
  username?: string;
  email?: string;
  password?: string;
  confirm_password?: string;
  first_name?: string;
  last_name?: string;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...