javascript - Typinstansering är extremt djup och möjligen oändlig med Emotion styled + material-ui + typescript
Jag får ett fel när jag försöker styla en komponent som importerats från Material-UI-biblioteket med styled API (@emotion/styled).
Error:(19, 5) TS2589: Type instantiation is excessively deep and possibly infinite.
Jag har försökt nedgradera till TypeScript 3.5.3, som några personer föreslog, men det löste inte problemet.
import * as React from 'react';
import styled from '@emotion/styled';
import TextField from '@material-ui/core/TextField';
const StyledTextField = styled(TextField)`
margin:10px;
`;
interface InputProps {
value: string;
name: string;
label: string;
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
}
const Input: React.FC<InputProps> = ({ value, name, label, onChange }) => {
return (
<StyledTextField
value={value}
name={name}
onChange={onChange}
label={label}
/>
);
};
export default Input;
Svar #1
Att sätta ett generiskt argument som ett tomt objekt löste problemet.
const StyledTextField = styled(TextField)<{}>`
margin: 10px
`;
Svar #2
Som en fortsättning på Nalhins svar, är detta den korrekta typedeklarationen för TextFieldProps.
const StyledTextField = styled(TextField)<TextFieldProps>`
margin:10px;
`;
