Avatar ·

如何在TypeScript中从数组过滤null和undefined:完整指南

大家好!我刚开始学习TypeScript,在处理数组时遇到了一个问题。我有一个数组,可能包含`null`或`undefined`值,我需要获取一个只包含实际值的新数组。 以下是代码示例: ```typescript const mixedArray: (number | null | undefined)[] = [1, null, 2, undefined, 3, null, 4]; // 我尝试过滤掉null和undefined const filteredArray = mixedArray.filter(item => item !== null && item !== undefined); // 但TypeScript仍然认为filteredArray中可能包含null/undefined // filteredArray的类型是 (number | null | undefined)[] // 尽管我已经明确过滤掉了所有空值! ``` 我已经尝试了不同的方法: 1. `filter(item => item)` — 但这也会过滤掉`0`和`false`,这不是我需要的 2. `filter(item => item != null)` — 对类型也没有帮助 3. 显式类型转换 `as number[]` — 可行,但这是一个临时解决方案 如何正确解决这个问题?需要让TypeScript理解过滤后的数组只包含`number`类型。