如何删除typescript中的非null断言



我是编程新手,我正在尝试删除下面代码中的非null断言,

const children: someData[] = flatten(
someData
.filter(({ children }) => children)
.map(({ children }) => children!) //remove non null assertion operator
);
const nestedChildren = flatten(
children
.filter(({ children }) => children)
.map(({ children }) => children!) //remove non null assertion operator
);

从上面的代码中可以看出,map方法中有非null断言运算符。我如何重写上面的代码,这样我就不会出错;无法将未定义分配给类型子级的

如果我删除非null断言运算符,我会得到如上所述的错误。有人能帮我修一下吗。谢谢

您需要使用自定义类型的保护


const children = [{ children: 42 }, {}]
.filter((elem): elem is { children: number } => Boolean(elem.children))
.map(({ children }) => children) 

最新更新