import type { HTMLAttributes } from 'react'; export interface TypewriterTextHandle { /** 暂停动画 */ pause: () => void; /** 继续动画 */ resume: () => void; /** 重置至第一段文字重新开始 */ reset: () => void; /** 跳过当前段落直接进入下一段 */ skip: () => void; } export interface TypewriterTextProps extends HTMLAttributes { /** 展示文本,支持字符串数组 */ text: string | string[]; /** 打字速度,支持随机区间 */ speed?: number | { min: number; max: number; }; /** 删除速度 */ deleteSpeed?: number; /** 是否启用回删效果 */ backspace?: boolean; /** 进入回删前的停顿时间,单位 ms */ pauseBeforeDelete?: number; /** 每段文本开始前的停顿时间,单位 ms */ startDelay?: number; /** 循环播放,true 表示无限循环,数字表示循环次数 */ loop?: boolean | number; /** 是否展示光标 */ cursor?: boolean; /** 光标字符 */ cursorChar?: string | React.ReactNode; /** 光标闪烁速度 */ cursorBlinkSpeed?: number; /** 每次新增字符时触发 */ onStep?: (_index: number, _output: string) => void; /** 每段文本输入完成后触发(进入删除之前) */ onComplete?: () => void; /** 控制屏幕阅读器播报行为 */ ariaLive?: 'off' | 'polite' | 'assertive'; }