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

TypeScript中重写console方法:消除方括号与解决类型错误

解决自定义console方法的两个核心问题

1. 消除util.inspect添加的多余方括号

问题出在直接将参数数组整体传入util.inspect,导致方法把数组序列化为带方括号的字符串。修正方式如下:

  • 遍历每个参数,单独调用util.inspect处理,避免数组被整体序列化
  • 不要将整个参数数组作为util.inspect的入参,而是逐个处理后再传递给原始console方法

示例修正:

// 错误写法(会产生方括号)
originalLog(util.inspect(args));

// 正确写法
const formattedArgs = args.map(arg => util.inspect(arg, { colors: true, depth: null }));
originalLog(...formattedArgs);

如果需要添加控制台样式,可以把样式作为独立参数传入,再展开格式化后的内容:

originalLog(styles.log, ...formattedArgs, '\x1b[0m');

2. 解决所有TypeScript类型错误

错误1:未找到标识符originalLog

提前保存原始console方法,并明确类型声明,避免变量未定义:

// 定义允许自定义的console方法类型
type ConsoleMethod = 'log' | 'warn' | 'error';

// 保存原始方法,指定类型
const originalMethods: Record<ConsoleMethod, typeof console.log> = {
  log: console.log,
  warn: console.warn,
  error: console.error,
};

后续通过originalMethods[method]调用原始方法即可。

错误2:无法用string类型索引Console和styles对象

  • 用ConsoleMethod联合类型限定合法的方法名,避免任意string索引
  • 为styles对象定义明确的类型约束:
const styles: Record<ConsoleMethod, string> = {
  log: '\x1b[37m',
  warn: '\x1b[33m',
  error: '\x1b[31m',
};

这样用method: ConsoleMethod作为索引时,TypeScript会识别为合法操作,不再报错。

完整修正后的代码

import util from 'util';

type ConsoleMethod = 'log' | 'warn' | 'error';

const originalMethods: Record<ConsoleMethod, typeof console.log> = {
  log: console.log,
  warn: console.warn,
  error: console.error,
};

const styles: Record<ConsoleMethod, string> = {
  log: '\x1b[37m',
  warn: '\x1b[33m',
  error: '\x1b[31m',
};

const createCustomConsole = (method: ConsoleMethod) => {
  return (...args: unknown[]) => {
    const formattedArgs = args.map(arg =>
      util.inspect(arg, {
        colors: true,
        depth: null,
        compact: false,
      })
    );
    originalMethods[method](styles[method], ...formattedArgs, '\x1b[0m');
  };
};

// 替换console原生方法
console.log = createCustomConsole('log');
console.warn = createCustomConsole('warn');
console.error = createCustomConsole('error');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:55:24