interface targetvecter { target: Vector }
interface targetunit { follow: unit }
type 目标坐标 = targetvecter | targetunit
function GetTarget(info: 目标坐标):Vector {
return info.target ?? getOrigin(info.follow)
}
函数GetTarget中的 info.center
会提示`类型“目标坐标”上不存在属性“target”。
类型“targetunit”上不存在属性“target”。`
函数GetTarget中的 info.follow
会提示`类型“目标坐标”上不存在属性“follow”。
类型“targetvecter”上不存在属性“follow”`
如何处理掉这个报错?
===========================================
如果需要放到ide中,简单的上下文如下:
type unit = Object & { readonly _unit: never };
type Vector = Object&{readonly _x:never};
interface targetvecter {
/** 终点或目标方向 */
target: Vector
}
interface targetunit {
/** 目标者 */
follow: unit
}
type 目标坐标 = targetvecter | targetunit
declare function getOrigin(ent:unit):Vector;
function GetTarget(info: 目标坐标):Vector {
return info.target ?? getOrigin(info.follow)
}
可以使用类型断言函数先判断类型,再使用其属性。
这里有一个关于类型断言的回答,可以参考。