Tsx 中属性的接口某属性设置 Optional 并且设置 defaultProps 类型可能为 undefined?

如题。如何使用 defaultProps 属性中的类型,避免类型推断错误,可选属性出现可能 undefined?

image.png

image.png

阅读 3.3k
2 个回答
  1. defaultProps 是React自己提供的运行时类型检测配置,

上下两者毫无关系

  1. typescript是编译器的类型检测工具,感知不到 defaultProps, 用的是IProps

解决办法, IProps 里面的相应属性去掉 ?(表示非必须属性)

TypeScript中除了 as 断言和 尖括号<SomeType>断言之外,还有一个非空断言。

下面这个不是报可能为undefined嘛,当你自己确定不会为空的时候可以在onToggle后面加上一个感叹号,断言前面的变量的不为空。 当然也可以使用可选链语法,使程序更健壮,万一真的不存在onToggle的时候也不至于报错

// 36行源代码
this.props.onToggle(this.state.expanded, this.closeMethod)
// 使用非空断言
this.props.onToggle!(this.state.expanded, this.closeMethod)
// 可选链
this.props.onToggle?.(this.state.expanded, this.closeMethod)

希望能对你的问题有一定帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏