Javascript 是否允许使用Typescript使用null内置JSX属性?

Javascript 是否允许使用Typescript使用null内置JSX属性?,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我做了很多: <button onClick={disabled ? null : cb}> 我可以通过以下操作修复此错误: <button onClick={disabled ? undefined : cb}> 然而,传统上,我们避免使用未定义的。在这种情况下,有没有办法让TS接受null?或者更一般地说,如果我能让TS考虑 null 和未定义是相同的值,这将有很大帮助。我的代码不区分这两者 我尝试禁用stricnullchecks,但没有成功 在这种情况下,

我做了很多:

<button onClick={disabled ? null : cb}>
我可以通过以下操作修复此错误:

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

然而,传统上,我们避免使用
未定义的
。在这种情况下,有没有办法让TS接受
null
?或者更一般地说,如果我能让TS考虑<代码> null <代码>和<代码>未定义是相同的值,这将有很大帮助。我的代码不区分这两者

我尝试禁用
stricnullchecks
,但没有成功

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

如果不更改类型定义,我不建议这样做

解决方案
只需使用未定义的
。同时使用
null
undefined
是使用JavaScript的必然选择,尤其是在使用您不是其所有者的生态系统包时(如react)。

您能否解释一下为什么“传统上,我们避免使用
undefined
”?这是一个可以重新分配的变量,所以人们过去喜欢空值。而且,我不喜欢它,因为很难判断某个东西是故意空的还是没有定义的。“如果我能让TS认为空的和未定义的是相同的值”,那么它们就不一样了。它们通常可以互换,但肯定不是在所有情况下都可以互换<代码>JSON.stringify({{:null})!=JSON.stringify({uu:undefined})
为什么不禁用按钮?@AluanHaddad我在写问题时编了一个例子,这个模式在整个代码库中都使用
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'.
interface DOMAttributes<T> {
  onClick?: MouseEventHandler<T>;
}
<button onClick={disabled ? undefined : cb}>