用途:在 TypeScript 中被迫使用 any 时,用更精确的变体替代裸 any,尽量保留类型安全。
主要能力:any[] 会检查是否为数组,Record<string, any> 会检查是否为对象,() => any 会检查是否为函数;这些变体比裸 any 更窄,仍能拦截部分错误。例如 getLength(array: any[]) 会拒绝 RegExp 等非数组参数,返回类型为 number 而非 any;hasKey(obj: Record<string, any>, key: string) 会拒绝 null;callTwice(fn: (...args: any[]) => any) 会拒绝数字。剩余参数用 any[] 而非 any,可让返回类型从 any 变为 number。
使用方式:把函数参数、返回类型、对象和数组中的 any 替换为对应精确变体;若类型真正未知,优先用 unknown,并在使用前通过 Array.isArray、typeof 等收窄。JSON.parse 的封装建议返回 unknown 而非 any。
适用场景:被迫使用 any、编写接受“任意值”的函数、处理真正动态的数据、从 JavaScript 迁移。
限制:any 是最后手段;即使使用精确变体,也应尽量隐藏在任何函数内部并配合良好类型签名。unknown 比任何 any 变体都更安全。资料未提供安装命令、平台或收费信息。