mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 06:15:51 +00:00
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:
@@ -802,13 +802,14 @@ export async function getAttachments(
|
||||
skillSearchModules &&
|
||||
!options?.skipSkillDiscovery
|
||||
? [
|
||||
maybe('skill_discovery', () =>
|
||||
skillSearchModules.prefetch.getTurnZeroSkillDiscovery(
|
||||
maybe('skill_discovery', async () => {
|
||||
const result = await skillSearchModules.prefetch.getTurnZeroSkillDiscovery(
|
||||
input,
|
||||
messages ?? [],
|
||||
context,
|
||||
),
|
||||
),
|
||||
)
|
||||
return result ? [result] : []
|
||||
}),
|
||||
]
|
||||
: []),
|
||||
]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const clearAttributionCaches: any = (() => {}) as any;
|
||||
export const sweepFileContentCache: any = (() => {}) as any;
|
||||
export const registerAttributionHooks: any = (() => {}) as any;
|
||||
export const clearAttributionCaches: () => void = () => {};
|
||||
export const sweepFileContentCache: () => void = () => {};
|
||||
export const registerAttributionHooks: () => void = () => {};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const buildPRTrailers: any = (() => {}) as any;
|
||||
export const buildPRTrailers: (attributionData: unknown, attribution: unknown) => string[] = () => [];
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const parseCcshareId: any = (() => {}) as any;
|
||||
export const loadCcshare: any = (() => {}) as any;
|
||||
import type { LogOption } from 'src/types/logs.js';
|
||||
export const parseCcshareId: (resume: string) => string | null = () => null;
|
||||
export const loadCcshare: (ccshareId: string) => Promise<LogOption> = async () => { throw new Error('ccshare not implemented'); };
|
||||
|
||||
@@ -18,14 +18,14 @@ export type CliHighlight = {
|
||||
// faulted in.
|
||||
let cliHighlightPromise: Promise<CliHighlight | null> | undefined
|
||||
|
||||
let loadedGetLanguage: any
|
||||
let loadedGetLanguage: ((name: string) => { name: string } | undefined) | undefined
|
||||
|
||||
async function loadCliHighlight(): Promise<CliHighlight | null> {
|
||||
try {
|
||||
const cliHighlight = await import('cli-highlight')
|
||||
// cache hit — cli-highlight already loaded highlight.js
|
||||
const highlightJs = await import('highlight.js')
|
||||
loadedGetLanguage = (highlightJs as any).getLanguage
|
||||
loadedGetLanguage = (highlightJs as { getLanguage?: typeof loadedGetLanguage }).getLanguage
|
||||
return {
|
||||
highlight: cliHighlight.highlight,
|
||||
supportsLanguage: cliHighlight.supportsLanguage,
|
||||
|
||||
@@ -285,7 +285,7 @@ export function getDefaultEffortForModel(
|
||||
config?.defaultModel !== undefined &&
|
||||
model.toLowerCase() === (config.defaultModel as string).toLowerCase()
|
||||
if (isDefaultModel && config?.defaultModelEffortLevel) {
|
||||
return config.defaultModelEffortLevel
|
||||
return config.defaultModelEffortLevel as EffortValue
|
||||
}
|
||||
const antModel = resolveAntModel(model)
|
||||
if (antModel) {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const startEventLoopStallDetector: any = (() => {}) as any;
|
||||
export const startEventLoopStallDetector: () => void = () => {};
|
||||
|
||||
@@ -106,7 +106,8 @@ export async function hasImageInClipboard(): Promise<boolean> {
|
||||
// as an unhandled rejection in useClipboardImageHint's setTimeout.
|
||||
try {
|
||||
const { getNativeModule } = await import('image-processor-napi')
|
||||
const hasImage = getNativeModule()!?.hasClipboardImage
|
||||
const nativeModule = getNativeModule() as Record<string, Function> | null
|
||||
const hasImage = nativeModule?.hasClipboardImage
|
||||
if (hasImage) {
|
||||
return hasImage()
|
||||
}
|
||||
@@ -135,7 +136,8 @@ export async function getImageFromClipboard(): Promise<ImageWithDimensions | nul
|
||||
) {
|
||||
try {
|
||||
const { getNativeModule } = await import('image-processor-napi')
|
||||
const readClipboard = getNativeModule()!?.readClipboardImage
|
||||
const nativeModule = getNativeModule() as Record<string, Function> | null
|
||||
const readClipboard = nativeModule?.readClipboardImage
|
||||
if (!readClipboard) {
|
||||
throw new Error('native clipboard reader unavailable')
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ async function loadLogList(path: string): Promise<LogOption[]> {
|
||||
}
|
||||
const logData = await Promise.all(
|
||||
files.map(async (file, i) => {
|
||||
const fullPath = join(path, file.name as string)
|
||||
const fullPath = join(path, String(file.name))
|
||||
const content = await readFile(fullPath, { encoding: 'utf8' })
|
||||
const messages = jsonParse(content) as SerializedMessage[]
|
||||
const firstMessage = messages[0]
|
||||
|
||||
@@ -164,9 +164,9 @@ export async function refreshActivePlugins(
|
||||
if (!p.hooksConfig) return sum
|
||||
return (
|
||||
sum +
|
||||
Object.values(p.hooksConfig).reduce(
|
||||
(Object.values(p.hooksConfig) as Array<Array<{ hooks: unknown[] }> | undefined>).reduce(
|
||||
(s, matchers) =>
|
||||
s + ((matchers as any)?.reduce((h: number, m: any) => h + m.hooks.length, 0) ?? 0),
|
||||
s + (matchers?.reduce((h: number, m: { hooks: { length: number } }) => h + m.hooks.length, 0) ?? 0),
|
||||
0,
|
||||
)
|
||||
)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const installPrepareCommitMsgHook: any = (() => {}) as any;
|
||||
export const installPrepareCommitMsgHook: (worktreePath: string, worktreeHooksDir?: string) => Promise<void> = async () => {};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const checkProtectedNamespace: any = (() => {}) as any;
|
||||
export const checkProtectedNamespace: () => boolean = () => false;
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const startSdkMemoryMonitor: any = (() => {}) as any;
|
||||
export const startSdkMemoryMonitor: () => void = () => {};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const createSessionTurnUploader: any = (() => {}) as any;
|
||||
export const createSessionTurnUploader: () => void = () => {};
|
||||
|
||||
@@ -215,8 +215,8 @@ async function handleSessionFileAccess(
|
||||
input.tool_name === FILE_WRITE_TOOL_NAME)
|
||||
) {
|
||||
memoryShapeTelemetry!.logMemoryWriteShape(
|
||||
input.tool_name,
|
||||
input.tool_input,
|
||||
input.tool_name as string,
|
||||
input.tool_input as Record<string, unknown>,
|
||||
filePath,
|
||||
scope,
|
||||
)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// Auto-generated type stub — replace with real implementation
|
||||
export type EffortLevel = any;
|
||||
export type EffortLevel = 'low' | 'medium' | 'high' | 'max';
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const watchSystemTheme: any = (() => {}) as any;
|
||||
export const watchSystemTheme: (querier: unknown, setTheme: React.Dispatch<React.SetStateAction<import('./systemTheme.js').SystemTheme>>) => (() => void) = () => () => {};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const shouldGenerateTaskSummary: any = (() => {}) as any;
|
||||
export const maybeGenerateTaskSummary: any = (() => {}) as any;
|
||||
export const shouldGenerateTaskSummary: () => boolean = () => false;
|
||||
export const maybeGenerateTaskSummary: (options: Record<string, unknown>) => void = () => {};
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const sendToUdsSocket: any = (() => {}) as any;
|
||||
export const listAllLiveSessions: any = (() => {}) as any;
|
||||
export const sendToUdsSocket: (target: string, message: string) => Promise<void> = async () => {};
|
||||
export const listAllLiveSessions: () => Promise<Array<{ kind?: string; sessionId?: string }>> = async () => [];
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// Auto-generated stub — replace with real implementation
|
||||
export {};
|
||||
export const startUdsMessaging: any = (() => {}) as any;
|
||||
export const getDefaultUdsSocketPath: any = (() => {}) as any;
|
||||
export const startUdsMessaging: (socketPath: string, options: { isExplicit: boolean }) => Promise<void> = async () => {};
|
||||
export const getDefaultUdsSocketPath: () => string = () => '';
|
||||
|
||||
Reference in New Issue
Block a user