当我在typescript中有类似的上下文时,使用联合或扩展的最佳方法是什么?



我有一个接收两种类型对象的函数,像这样:

const canBeGenericOrDefaultData = {
id: 123,
pointData: {
square: 'x145',
triangle: 'y145'
}
}

function submitHandler(canBeGenericOrDefaultData: AllTheDatas | GenericAllTheDatas):
buildPointData(canBeGenericOrDefaultData.pointData)
// do something
function buildPointData(pointData: AllTheDatas["pointData"] | GenericAllTheDatas["pointData"])

我的接口:

interface AllTheDatas{
id: string
pointData: {
square: string
triangle: string
}
}
interface GenericAllTheDatas{
id: string
pointData: {
square: string
triangle: string
}
}

背景:我们有两个类似的界面,因为我们有一个默认页面(在生产中)和另一个仍在开发中的通用页面。我们不想触碰或改变默认页面的结构,所以在这种情况下,我们只是试图共享两个页面的提交处理程序,以避免服务/按钮处理程序的重复。

问题是:每次在submitHandler中调用函数时都这样声明是正确的吗?还是我们有另一种更简单的方式来输入?

在这个上下文中,如果我添加一个新的类型,如:

interface AllTheDatas{
id: string
pointData: {
square: string
triangle: string
newForm: string
}
}
interface GenericAllTheDatas{
id: string
pointData: {
square: string
triangle: string
}
}

并开始接收两个对象

const defaultData = {
id: 123,
pointData: {
square: 'x145',
triangle: 'y145',
newForm: 'x1234'
}
}
const genericData = { 
id: 123,
pointData: {
square: 'x145',
triangle: 'y145'
}
} 

我可以创建另一个接口并扩展到genericallthedata吗?这是个好习惯吗?

尝试使用类型而不是接口,直到该接口不同。注意,在底层接口和类型是相同的。

type GenericAllTheDatas = AllTheDatas;

相关内容

  • 没有找到相关文章