如何修复 TypeScript 和 React 中禁止的非空断言?

Har*_*ika 9 typescript reactjs

我有如下代码:

type ItemProps = {
    status?: string;
}

<Items status={status!} /> // error here: warning  Forbidden non-null assertion
                           //                   @typescript-eslint/no-non-null-
Run Code Online (Sandbox Code Playgroud)

断言

我收到禁止的非空断言错误。

我该如何修复这个错误?

我努力了

<Items status={status && status}/>
Run Code Online (Sandbox Code Playgroud)

但这似乎不正确。

Her*_*dre 15

为什么要使用“非空断言运算符”?

status属性可以是string | undefined. 当您不想指定 的值时,传递空字符串或分配默认值怎么样status

<Items status={status || ''}/>
Run Code Online (Sandbox Code Playgroud)

或者:

type ItemProps = {
  status?: string;
};

const Items: React.FC<ItemProps> = ({ status = 'statusDefaultValue' }) => <div>Some JSX</div>
Run Code Online (Sandbox Code Playgroud)

在不了解上下文的情况下,我很难理解你的情况。希望这能有所帮助。

  • 当然,在某些情况下,您确信某个特定值存在,因为您之前已经检查过它,或者您可以使用类型保护来检查对象中的属性。根据OP的问题,我建议非空运算符不是实现预期结果的方法。如果你有答案,我很乐意阅读:) (3认同)
  • 不确定我是否在关注。通过使用“!”运算符,您可以告诉编译器“status”永远不会是“null”。/sf/ask/4056633661/ (2认同)