You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+TypeScript中如何访问TinyMCE的Editor实例类型?

解决TinyMCE React组件onInit回调中Editor实例类型找不到的问题

问题场景

在使用@tinymce/tinymce-react的Editor组件时,onInit回调接收的第二个参数是TinyMCE核心的Editor实例(和导入的React组件类型不同)。当尝试在自定义回调函数中声明该实例的类型时,直接写editor: Editor会提示“无法找到名称'Editor'”,而用组件类型TinyMCEEditor会出现类型不匹配错误,虽然鼠标悬停参数时能识别正确类型。

当前代码示例:

import { Editor as TinyMCEEditor } from '@tinymce/tinymce-react';

<TinyMCEEditor
  apiKey="asdf"
  onInit={(evt, editor) => onInitCallBack(evt, editor)}
  // 其他组件属性
/>

// 此处报错:无法找到名称'Editor'
const onInitCallBack = (_, editor: Editor) => {
  // 业务逻辑代码
};

解决方案

方案1:直接导入TinyMCE核心的Editor类型

onInit中的editor是TinyMCE核心库的实例,而@tinymce/tinymce-react依赖tinymce包,可直接从核心包导入对应类型:

import type { Editor } from 'tinymce';
import { Editor as TinyMCEEditor } from '@tinymce/tinymce-react';

const onInitCallBack = (_, editor: Editor) => {
  // 此时editor类型可被正确识别
};

方案2:从组件Props中提取回调类型

如果不想直接依赖核心包类型,可从@tinymce/tinymce-react的组件Props中提取onInit的类型,让TypeScript自动推导参数类型:

import { Editor as TinyMCEEditor, EditorProps } from '@tinymce/tinymce-react';

// 提取onInit的回调类型
type OnInitHandler = NonNullable<EditorProps['onInit']>;

// 使用提取的类型定义回调函数,无需手动声明参数类型
const onInitCallBack: OnInitHandler = (_, editor) => {
  // editor类型自动匹配正确
};

方案3:通过组件类型推导实例类型

利用TypeScript的类型工具,从React组件的props中直接提取onInit的参数类型:

import { Editor as TinyMCEEditor } from '@tinymce/tinymce-react';

// 获取onInit回调的第二个参数类型
type TinyMCEInstance = Parameters<NonNullable<TinyMCEEditor['props']['onInit']>>[1];

const onInitCallBack = (_, editor: TinyMCEInstance) => {
  // 类型可被正确识别
};

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:15:39