类型断言这块实际应用场景感觉还不是很清晰?

来源:7-5 【TS类型断言丶转换应用】 类型断言的9种使用场景 3

慕粉3418849

2023-02-02

老师,类型断言是什么,有哪些场景,或者哪些类型可以相互断言,目前已经很清楚啦,但是还是有一个明显的问题,不知道到底什么时候去使用类型断言?

所以,这块实际在项目中的应用场景老师能大概说一下,或者说后续可能这块是否有讲解?

写回答

2回答

keviny79

2023-02-14

场景3:

使用类型断言场景 Vue3 虚拟节点代码片段。。。。。

export interface VNode {

  _v_isVNode: true;

  shapeFlag: number;

  component: null;

  el: null;

  anchor: null;

  target: null;

  type: any;

  props: any;

  children: any;

}

export function createBaseVNode(。。。。。) {

  //   const vnode:VNode 这样写有错误,因为没有写全属性

  //  解决方法1: 将 VNode 其他不用属性一律变为可选属性,比如: component?:null,

  // 但为了后面更方便更调用,此时我们此刻并不希望变成可选属性,那就最好用解决方法2来处理。

  // 解决方法2:用类型断言,子集对象直接用断言

  const vnode = {

    _v_isVNode: true,

    el: null,

    anchor: null,

    target: null,

  } as VNode;

}


1
0

keviny79

2023-02-03

举两个场景:

场景1:本章 6-3 就是真实项目中一个类型断言的真实场景片段。

场景2:Vue3 源码中类型断言很多,举一个源码片段:

export interface Target {

  [ReactiveFlags.SKIP]?: boolean

  [ReactiveFlags.IS_REACTIVE]?: boolean

  [ReactiveFlags.IS_READONLY]?: boolean

  [ReactiveFlags.IS_SHALLOW]?: boolean

  [ReactiveFlags.RAW]?: any

}

// 外部传递对象进来,可能包含 Target 某一个属性key,也可能不包含,进到方法来判断

export function isShallow(value: unknown): boolean   {  

  return !!(value && (value as Target)[ReactiveFlags.IS_SHALLOW])

}


1
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程