从像接口这样的联合类型中挑选,可以使用类型断言或类型守卫来实现。
类型断言是一种告诉编译器某个值的具体类型的方式。在联合类型中,可以使用类型断言将值断言为特定的类型,然后就可以访问该类型的属性和方法了。例如,假设有一个联合类型 Shape
,包含 Circle
和 Rectangle
两种类型:
interface Circle {
kind: "circle";
radius: number;
}
interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
type Shape = Circle | Rectangle;
要从 Shape
类型中挑选出 Circle
类型的值,可以使用类型断言:
function getCircle(shape: Shape): Circle | undefined {
if (shape.kind === "circle") {
return shape as Circle;
}
return undefined;
}
在上述代码中,我们通过判断 shape.kind
的值是否为 "circle"
,来确定 shape
是否为 Circle
类型。如果是,就使用类型断言 as Circle
将其断言为 Circle
类型,并返回。
除了类型断言,还可以使用类型守卫来实现从联合类型中挑选特定类型的值。类型守卫是一种在条件语句中使用的类型判断方式,通过判断某个属性是否存在或满足特定条件,来确定值的具体类型。例如,使用类型守卫来挑选 Circle
类型的值:
function getCircle(shape: Shape): Circle | undefined {
if ("radius" in shape) {
return shape;
}
return undefined;
}
在上述代码中,我们通过判断 shape
是否具有 radius
属性,来确定 shape
是否为 Circle
类型。如果是,就返回 shape
。
总结起来,从像接口这样的联合类型中挑选特定类型的值,可以使用类型断言或类型守卫。类型断言通过将值断言为特定类型来访问该类型的属性和方法,而类型守卫通过判断属性是否存在或满足特定条件来确定值的具体类型。这样可以根据需要从联合类型中选择出所需的类型,并进行相应的操作。
腾讯云相关产品和产品介绍链接地址:
请注意,以上仅为腾讯云相关产品的示例,其他云计算品牌商也提供类似的产品和服务。
领取专属 10元无门槛券
手把手带您无忧上云