如何在TypeScript中向数组添加元素时提供类型定义?
解决TypeScript数组遍历避免使用any类型的问题
核心方案
给answers数组指定你已定义的answerProps接口类型,让TypeScript自动推断遍历项的类型,同时优化遍历方法的选择:
修改后的代码示例
interface answerProps { state: string; answer: string; } // 给answers指定明确的类型 const answers: answerProps[] = []; // 替换为你的实际数据源 const results: string[] = []; // 用forEach替代map(语义更准确,map用于生成新数组,此处仅需遍历执行操作) if (!isEmpty(answers)) { answers.forEach((item) => { results.push(`${item.state} : ${item.answer}`); }); }
关键说明
- 当
answers被指定为answerProps[]类型后,TypeScript会自动识别遍历中的item类型为answerProps,无需再用any兜底。 - 原代码中使用
map不合适:map的设计初衷是通过遍历生成新数组,而此处只是执行push操作,没有利用map返回的数组,改用forEach更符合代码语义,也避免不必要的数组创建。
如果answers是来自函数参数或外部传入,同样需要在传入时指定类型:
function processAnswers(answers: answerProps[]) { const results: string[] = []; if (!isEmpty(answers)) { answers.forEach(item => { results.push(`${item.state} : ${item.answer}`); }); } return results; }
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

