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}>