import Vue from 'vue'; import ToastuiEditor from '@toast-ui/editor'; import ToastuiEditorViewer from '@toast-ui/editor/dist/toastui-editor-viewer'; type FunctionKeys<T extends object> = { [K in keyof T]: T[K] extends Function ? K : never; }[keyof T]; type EditorFnKeys = FunctionKeys<ToastuiEditor>; type ViewerFnKeys = FunctionKeys<ToastuiEditorViewer>; export class Editor extends Vue { invoke<T extends EditorFnKeys>( fname: T, ...args: Parameters<ToastuiEditor[T]> ): ReturnType<ToastuiEditor[T]>; getRootElement(): HTMLElement; } export class Viewer extends Vue { invoke<T extends ViewerFnKeys>( fname: T, ...args: Parameters<ToastuiEditorViewer[T]> ): ReturnType<ToastuiEditorViewer[T]>; getRootElement(): HTMLElement; }