繁体   English   中英

允许 null 在带有 Typescript 的内置 JSX 属性中?

[英]Allow null in built-in JSX attributes with Typescript?

我做了很多:

<button onClick={disabled ? null : cb}>

或者:

function Button({ style = null }) {
  return <button style={style} />;
}

但是,我会得到:

Type '(() => void) | null' is not assignable to type '((event: MouseEvent<HTMLDivElement, MouseEvent>) => void) | undefined'.
  Type 'null' is not assignable to type '((event: MouseEvent<HTMLDivElement, MouseEvent>) => void) | undefined'.

供参考,来自@types/react

interface DOMAttributes<T> {
  onClick?: MouseEventHandler<T>;
}

我可以通过执行以下操作来修复此错误:

<button onClick={disabled ? undefined : cb}>

然而,传统上,我们避免使用undefined 在这种情况下,有没有办法让 TS 接受null 或者更一般地说,如果我可以让 TS 考虑nullundefined是相同的值,那将有很大帮助。 我的代码对两者没有区别。

我尝试禁用strictNullChecks ,但没有奏效。

在这种情况下,有没有办法让 TS 接受 null

除非更改类型定义,否则我不建议这样做。

解决方案

只需使用undefined 同时使用nullundefined是使用 JavaScript 的必然性,尤其是在使用您不是所有者的生态系统包时(如 react)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM