类型断言这块实际应用场景感觉还不是很清晰?
来源: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;
}
10 -
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])
}
10
相似问题