有没有一种简洁的方法可以从同一类型、对象或数组的并集参数中获取对象属性



给定以下条件:

// External code, can't change
type Point = {
x: number;
y: number;
};
export const getPointData: (Point | Point[]) = (id: number) => {
return getPoints(id);
}
// Our code
import { getPointData } from "something";
const pointData = getPointData(0); // returns as Coordinates | Coordinates[]

现在我可以在这里检查坐标的类型,但点不是从库中导出的,所以我认为这有点黑客。我也可以检查数据是否是数组,但问题是是否有更简洁的方法。

这是我目前的解决方案。这是唯一的路吗?

const points = Array.isArray(pointData) ? 
{ pointData[0].x, pointData[0].x } : 
{ pointData.x, pointData.x }

是的,isArray技术是合法的,确实是最好的方法。对于并集,编译器需要类型缩小才能计算出类型。isArray检查对TypeScript编译器和JS运行时都有效,因此您可以通过一个简单的调用来了解两者。

最新更新