Ошибка при использовании Partial <NormalComponents & SpecialComponents> в nextjs с TypeScript

Я пытаюсь разработать приложение для блога, используя Next.js. В этом приложении есть компонент, который принимает файл разметки и отображает его содержимое как страницу блога.

      import ReactMarkdown from 'react-markdown';
import { NormalComponents, SpecialComponents } from 'react-markdown/lib/ast-to-react';
import { materialLight } from 'react-syntax-highlighter/dist/cjs/styles/prism';
import {Prism as SyntaxHighlighter} from 'react-syntax-highlighter';
import { FunctionComponent } from 'react';

interface IProps {
    content: string;
}

const Markdown: FunctionComponent<IProps> = ({content}) => {
    const components: Partial<NormalComponents & SpecialComponents> = {
        code({node, inline, className, children, ...props}) {
            const match = /language-(\w+)/.exec(className || '');
    
            return (!inline && match) ? (
                <SyntaxHighlighter style={materialLight} PreTag="div" language={match[1]} children={String(children).replace(/\n$/, '')} {...props} />
            ) : (
                <code className={className ? className : ""} {...props}>
                    {children}
                </code>
            )
        }
    }

    return <div className="markdown-body">
        <ReactMarkdown components={components} children={content} />
    </div>
}

export default Markdown;

Однако когда я попытался создать приложение, он потерпел неудачу, вызвав следующую ошибку.

Тип '({node, inline, className,children, ... props}: {[x: string]: any; node: any; inline: any;className: any; children: any;}) => Element' - это не назначается типу '(("code" | ((props:ClassAttributes & HTMLAttributes &ReactMarkdownProps) => ReactNode)) & (keyof IntrinsicElements |CodeComponent)) | неопределенный'. Тип '({node, inline, className,children, ... props}: {[x: string]: any; node: any; inline: any;className: any; children: any;}) => Element' - это не назначается типу "код" и CodeComponent. Тип '({node, inline, className,children, ... props}: {[x: string]: any; node: any; inline: any;className: any; children: any;}) => Element' - это не присваивается типу «код».

Поскольку я новичок в Next.js, я действительно не мог понять, почему это происходит. Много искал в Интернете, но не нашел удовлетворительного ответа. Единственное, что я мог понять, это то, что речь идет о некоторых недостающих типах, но дальше этого не было.

Как я могу избежать этой проблемы и создать приложение Next.js? вся помощь приветствуется.

0 ответов

Другие вопросы по тегам