在 ReactJS 中,我通常使用这种 destructurnig props 模式(我想这很惯用):
export default function Example({ ExampleProps }) {
const {
content,
title,
date,
featuredImage,
author,
tags,
} = ExampleProps || {};
我可以在解构时添加默认值,这增加了一些安全性:
export default function Example({ ExampleProps }) {
const {
content = "",
title = "Missing Title",
date = "",
featuredImage = {},
author = {},
tags = [],
} = ExampleProps || {};
但是现在我切换到 TypeScriptstrict
模式,我很难过。我的道具是由 GraphQl codegen 输入的,几乎所有的属性都包装在一个Maybe<T>
类型中,所以当展开时,有actualValue | null | undefined
.
如果值为 ,默认值({ maybeUndefined = ""} = props)
可以救我undefined
,但null
值会通过,所以 TS 编译器在唠叨,我的代码导致很多:
tags?.nodes?.length // etc…
这让我有点紧张,因为可选链的成本一文(尽管我不知道它在 2021 年的相关性如何)。我还听说?.
操作员过度使用被称为“代码异味”的一个例子。
是否有一种模式,可能利用??
运算符,可以使 TS 编译器高兴并且至少可以清除其中的一些very?.long?.optional?.chains
?