我是Flow的新手。我的问题是如何处理类型不兼容:我有一个带有下划线样式属性的对象,并且我想编译一个具有相同值但驼峰式样式属性的新对象。我有一个changeCaseStyle
函数。它应该可重用,这样我就可以在那里传递任何对象并对其进行转换:
/* @flow */
type ObjUnderscoreType = {
str_property: string,
num_property: number
};
type ObjCamelCaseType = {
strProperty: string,
numProperty: number
}
const objUnderscore = { str_property: 'foo', num_property: 2 };
function changeCaseStyle(obj: {[string]: mixed}): {[string]: mixed} | null {
if (obj === null || obj === undefined) return null;
if (typeof obj === 'object') {
const resultObj = {};
for (let key in obj) {
// some dummy case transforming logic here...
switch (key) {
case 'str_property':
resultObj.strProperty = obj[key];
break;
case 'num_property':
resultObj.numProperty = obj[key];
break;
default: resultObj[key] = obj[key];
}
}
return resultObj;
}
return null;
}
const objCamelCase: ObjCamelCaseType | null = changeCaseStyle(objUnderscore);
结果是我收到此警告:
由于混合,无法将
changeCaseStyle(...)
分配给objCamelCase
[1]与属性numProperty
中的数字[2]不兼容