feat: 全面清理类型错误 — tsc 零错误,any 标注全部消除

- 修复所有 33 个原始 tsc 编译错误(ink JSX 声明、类型不匹配、null check 等)
- 清理 176 处 `: any` 类型标注,全部替换为具体推断类型
- 修复清理过程中引入的 41 个回归错误
- 最终结果:0 tsc 错误,0 个非注释 any 标注
- Build 验证通过(25.75MB bundle)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
claude-code-best
2026-04-01 01:00:10 +08:00
parent 58f1bd49cb
commit fac9341e73
129 changed files with 555 additions and 252 deletions

View File

@@ -1,11 +1,47 @@
// Type declarations for custom Ink JSX elements
// Note: The detailed prop types are defined in ink-jsx.d.ts via React module augmentation.
// This file provides the global JSX namespace fallback declarations.
import type { ReactNode, Ref } from 'react';
import type { ClickEvent } from '../ink/events/click-event.js';
import type { FocusEvent } from '../ink/events/focus-event.js';
import type { KeyboardEvent } from '../ink/events/keyboard-event.js';
import type { Styles, TextStyles } from '../ink/styles.js';
import type { DOMElement } from '../ink/dom.js';
declare global {
namespace JSX {
interface IntrinsicElements {
'ink-box': any;
'ink-text': any;
'ink-link': any;
'ink-raw-ansi': any;
'ink-box': {
ref?: Ref<DOMElement>;
tabIndex?: number;
autoFocus?: boolean;
onClick?: (event: ClickEvent) => void;
onFocus?: (event: FocusEvent) => void;
onFocusCapture?: (event: FocusEvent) => void;
onBlur?: (event: FocusEvent) => void;
onBlurCapture?: (event: FocusEvent) => void;
onMouseEnter?: () => void;
onMouseLeave?: () => void;
onKeyDown?: (event: KeyboardEvent) => void;
onKeyDownCapture?: (event: KeyboardEvent) => void;
style?: Styles;
stickyScroll?: boolean;
children?: ReactNode;
};
'ink-text': {
style?: Styles;
textStyles?: TextStyles;
children?: ReactNode;
};
'ink-link': {
href?: string;
children?: ReactNode;
};
'ink-raw-ansi': {
rawText?: string;
rawWidth?: number;
rawHeight?: number;
};
}
}
}