ts 类型使用?

作者站长头像
站长
· 阅读数 5

ts  类型使用?addPopup 方法 传入值我希望限制为 AddDisplayItem (提示 使用者对象的zIndex不能自定义),但我后续操作都是将它看作 DisplayItem 类型;这要怎么做呢?

回复
1个回答
avatar
test
2024-06-29

如果你能确保传入类型为 DisplayItem,那么可以简单的使用 as 类型断言即可,示例如下:

function func(data: AddDisplayItem) {
  if ("zIndex" in data) {
    const it = data as DisplayItem;
    // 现在可以安全的访问 it.zIndex 了
  }
}

或者可以使用类型保护更优雅一点,示例如下:

function isDisplayItem(data: AddDisplayItem): data is DisplayItem {
  return "zIndex" in data;
}

function func(data: AddDisplayItem) {
  if (isDisplayItem(data)) {
    // 现在可以安全的访问 data.zIndex 了
  }
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容