Home > Mobile >  how to convert this into a typescript
how to convert this into a typescript

Time:12-24

How to make this jsx in typescript. In javascript, it looks like this. But in typescript, I don't know how to achieve this exact code!

const Users = ({details,deleteUser}) => {
    return (
        <>
            <div>
            {details.map(detail => (
                <tr key={detail.del}>
                    <td>{detail.del}</td>
                    <td>{detail.name}</td>
                    <td>{detail.email}</td>
                    <td>{detail.pass}</td>
                    <td>{detail.contact}</td>
                    <td className='delete-btn' onClick={() => deleteUser(detail.del)}>
                        Delete
                    </td>
                </tr>
            ))}
            </div>
        </>
    )}

CodePudding user response:

As first you should define your props type:

type User = {
  del: string;
  name: string;
  email: string;
  pass: string;
  contact: string;
};
type UsersProps = {
  details: User[];
  deleteUser: (del: string) => void;
};

After this you should apply the type to the component props:

const Users = (props: UsersProps) => {
    const {details,deleteUser} = props;
    return (
        <>
            <div>
            {details.map(detail => (
                <tr key={detail.del}>
                    <td>{detail.del}</td>
                    <td>{detail.name}</td>
                    <td>{detail.email}</td>
                    <td>{detail.pass}</td>
                    <td>{detail.contact}</td>
                    <td className='delete-btn' onClick={() => deleteUser(detail.del)}>
                        Delete
                    </td>
                </tr>
            ))}
            </div>
        </>
    )
};

In this way typescript will show you any typo, for example if you write detail.mail instead of detail.email ts will highlight it for you.

CodePudding user response:

At first, you need the interface of the User in typescript.

export default interface IUser {
   id: number,
   name: string,
   image: string,
   ...others
}

Then you need to define the passed parameters it should look like the User interface. So the code will be.

{details<IUser[]>.map(detail => (
                <tr key={detail.del}>
                    <td>{detail.del}</td>
                    <td>{detail.name}</td>
                    <td>{detail.email}</td>
                    <td>{detail.pass}</td>
                    <td>{detail.contact}</td>
                </tr>
            ))}
  • Related