美文网首页
ts经典案例

ts经典案例

作者: 苍老师的眼泪 | 来源:发表于2022-09-16 02:15 被阅读0次
  1. 对象可能为“未定义”。
    const route_permission = route_item.meta.permission as number  // 报错: 对象可能为“未定义”。

解析:作为 RouteRecordRaw 类型的变量 route_item 可能有 meta 这个属性,也可能没有这个属性(RouteMeta | undefined),业务上我们确定是有 meta 这个属性的,因此可以用断言修饰 meta 这个属性:

    const route_permission = route_item.meta!.permission as number
  1. 类型“AxiosResponse<any, any>”上不存在属性“menu_permissions_id”
      request.get('/info').then(res => {
        context.commit('set_user_info', res)
        
        filter_async(res.menu_permissions_id)    // 报错:类型“AxiosResponse<any, any>”上不存在属性“menu_permissions_id”

      }).catch(err => {
        if (!err.type)
          console.error(err)
      })

解析:res 作为 axios 的一个返回结果,ts 并不知道它里面有没有 menu_permissions_id 这个属性,这个属性是后端返回的,因此我们要让 ts 知道 res 里面是肯定有这个属性的,因为我们跟后端约好了返回结果里面就是有这个字段的,所以可以用断言解决这个问题:

request.get('/info').then(res => {
        context.commit('set_user_info', res)
        
        filter_async((res as any).menu_permissions_id)

      }).catch(err => {
        if (!err.type)
          console.error(err)
      })
  1. 类型约束
{
    menus_status: <'0' | '1'> '1',
}

如果不加 <'0' | '1'> ,menus_status 的类型会被推断为 string,加了表示 menus_status 只会是 ’0‘ 和 ’1‘ 之间的一个

相关文章

网友评论

      本文标题:ts经典案例

      本文链接:https://www.haomeiwen.com/subject/nuxrnrtx.html