javascript - Hvordan får jeg tilgang til typen "Editor" definert av TinyMCE i React og TypeScript?
Jeg prøver å finne ut hvordan jeg får tilgang til typer definert i en NPM-modul.
TinyMCE har en editor React-komponent kalt Editor og den inneholder en onInit-metode som tar to parametere, en hendelse og selve editoren, også av typen Editor men forskjellig fra komponenten.
Så jeg importerer Editor-komponenten fra biblioteket ved å gjøre
import { Editor as TinyMCEEditor } from '@tinymce/tinymce-react';
Og jeg definerer redaktøren som følgende...
<TinyMCEEditor
apiKey="asdf"
onInit={(evt, editor) => onInitCallBack(evt, editor)}
...
/>
Deretter prøvde jeg å definere tilbakekallingen for å samsvare med den forventede typen
const onInitCallBack = (_, editor: Editor) => {
...
};
Det merkelige er at det er i stand til å gjenkjenne Editor-typen når den blir holdt over med musen.
(parameter) editor: Editor
Samt arrangementets type:
(parameter) evt: {
readonly type: string;
readonly target: any;
readonly isDefaultPrevented: () => boolean;
readonly preventDefault: () => void;
...etc
}
Men på onInitCallBack når jeg prøver å definere Editor-typen, sier den at den ikke kan finne navnet 'Editor':
type Editor = /*unresolved*/ any
Cannot find name 'Editor'. ts(2304)
Hva må jeg gjøre for at det skal kunne se Editor-typen som er definert i NPM-pakken?
Hvis jeg prøver å bruke TinyMCEEditor som en type får jeg følgende feil.
(parameter) editor: Editor
Argument of type ‘import("e:/Git/web-app-release-notes-editor/node_modules/tinymce/tinymce").Editor’ is not assignable to
parameter of type ‘import("e:/Git/web-app-release-notes-editor/node_modules/@tinymce/tinymce-
react/1lib/cjs/main/ts/components/Editor").Editor’
Type ‘Editor’ is missing the following properties from type ‘Editor’: elementRef, boundHandlers, rollbackTimer, valueCursor, and
23 more. t5(2345)
Svar #1
Du forveksler React-komponenten Editor og tinymce Editor - merk at de har samme navn. Sikkert trenger du noe som...
import { Editor } from '@tinymce/tinymce-react';
import { Editor as TinyMCEEditor } from 'tinymce';
Da
const editorRef = useRef<TinyMCEEditor | null>(null);
og...
<Editor
onInit={(evt, editor) => editorRef.current = editor}
...
/>
Selv om jeg kanskje har rotet til syntaksen her...
