【发布时间】:2020-04-27 00:56:17
【问题描述】:
我玩过routing-controllers,它具有内置的类转换器能力。我尝试构建一个界面,我可以在其中执行基于location id 或location coordinate 的搜索查询。所以我打算使用 discriminated union 作为正文参数,但无法让它工作。 (请参阅最后一个控制台输出,我所说的“不工作”是什么意思)
举个例子:
interface LocationCoordinates {
type: 'coordinate'
longitude: number
latitude: number
}
interface LocationId {
type: 'id'
id: number
}
class LocationRadius {
data: LocationCoordinates | LocationId
searchRadiusInKm: number
}
// raw input for LocationCoordinates
const rawLocationCoordinates = {
data: {
longitude: 22,
latitude: 33
},
searchRadiusInKm: 30
}
// raw input for LocationId
const rawLocationId = {
data: {
id: 1
},
searchRadiusInKm: 30
}
// transfrom both raw inputs
const realLocationCoordinates = plainToClass(LocationRadius, rawLocationCoordinates);
const realLocationId = plainToClass(LocationRadius, rawLocationId);
console.log({
coordinateType: realLocationCoordinates.data.type, // expect 'coordinate' but got 'undefinded'
idType: realLocationId.data.type // expect 'id' but got 'undefinded'
});
有没有办法做到这一点?
【问题讨论】:
标签: typescript class-transformer