我有这个辅助功能:
I am using one Pojo and I am getting databinding error
Found data binding errors.
****/ data binding error ****msg:Could not find accessor com.jmr.agency.banking.data.db.communication.CommTransaction.dName
file:C:\Users\1432\Documents\Pooja\my_proj\Aman_bank300719\Agency_Banking_Rewamp\app\src\main\res\layout\activity_receive_money_security_task.xml
loc:183:68 - 183:87
****\ data binding error ****
this is my code
ActivityReceiveMoneySecurityTaskBinding binding;
this is my xml
`<data>
<import type="android.view.View" />
<variable
name="security_check" type="com.jmr.agency.banking.data.db.communication.CommTransaction" />
</data>`
public class CommTransaction extends CommAgent
implements Parcelable {
private Double txnAmount;
private String transId;
// RefId
private String serverTxnId;
// CBS
private String dBranch;
private String cBranch;
private String dAccountNo;
private String dName;
private String dLoc;
private String dCurrency
}
并以这种方式使用:
getAndAssignToObject<T>(key: string, objectToAssign: T): Promise<T> {
const data = await AppStorage.get<T>(key);
Object.keys(data).forEach( dataKey => {
// @ts-ignore
objectToAssign[dataKey] = data[dataKey];
});
return data;
}
它可以按预期工作,但是如您所见,我确实有一个Helpers.getAndAssignToObject<BlockingConfig>(Components.BlockingRules, blockingData);
要删除。
删除时出现的错误是:
元素隐式地具有“ any”类型,因为类型“ string”的表达式不能用于索引“ unknown”类型。 在类型'unknown'上未找到参数类型为'string'的索引签名。ts(7053)
,我不知道如何解决。我尝试将@ts-ignore
的类型设为dataKey
,但没有用。
答案 0 :(得分:1)
您需要断言Object.keys
返回Array<keyof T>
而不是Array<string>
。
async function getAndAssignToObject<T>(key: string, objectToAssign: T): Promise<T> {
const data = await AppStorage.get<T>(key);
(Object.keys(data) as Array<keyof T>).forEach(dataKey => {
objectToAssign[dataKey] = data[dataKey];
});
return data;
}
这不是默认设置的原因已在here中进行了说明。从根本上说,例如objectToAssign
可能具有比keyof T
所建议的更多的属性,这可能会导致运行时错误。在这种情况下,您会将那些多余的键复制到data
上,这在此功能中不是问题,但可能在其他地方引起问题。