我有一个接收两种类型对象的函数,像这样:
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;