如何在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`类型。