【发布时间】:2021-12-17 06:30:49
【问题描述】:
我有下一个数据类型为 Data
type Data = {
Id: string,
LogicalName: string,
VATRegistered: {
Label: string | null,
Value: number | null,
}
}
const data: Data = {
Id: 'qK1jd828Qkdlqlsz8123assaa',
LogicalName: 'locale',
VATRegistered: {
Label: 'AT401',
Value: 1000001
}
}
我必须将其转换为下一个:
const transformedData = {
Id: 'qK1jd828Qkdlqlsz8123assaa',
LogicalName: 'locale',
VATRegisteredLabel: 'AT401',
VATRegisteredValue: 1000001
}
我写了一个函数,它必须转换我的对象并用下一个类型返回它
type TransformedData {
Id: string,
LogicalName: string,
VATRegisteredLabel: string | null,
VATRegisteredValue: number | null
}
我的功能:
const _isNull = (value: any) => {
let res = value === null || undefined ? null : value;
return res
};
function transformData<T extends {}, U extends {}>(obj: T, fatherName: keyof U | undefined) {
let newObj;
for (let key in obj) {
let k = obj[key];
if (typeof k === 'object' && !Array.isArray(k) && k !== null) {
Object.assign(newObj, transformData<typeof k, T>(k, key))
} else {
Object.assign(newObj, { [fatherName ? fatherName + key : key]: _isNull(k) })
}
}
return newObj;
}
但是我获得了一个空对象类型的新对象。 有没有办法重写返回一个 TransformedData 类型的新对象的函数?
【问题讨论】:
-
您的
let newObj;行根本没有创建任何对象,因此这将导致运行时错误。我认为这只是一个错字,我建议您至少将其更改为let newObj = {},以免运行时行为成为问题
标签: typescript