我有一个对象,例如:
@Override
public void onBindViewHolder(@NonNull PeopleToAddAdapter.MyViewHolder holder, int position) {
final PeopleToAdd listItem = mPeopleToAdd.get(position);
holder.emailLbl.setText(listItem.getEmail());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "You clicked" + listItem.getEmail(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public int getItemCount() {
return mPeopleToAdd.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView emailLbl;
public MyViewHolder(View itemView) {
super(itemView);
emailLbl = (TextView) itemView.findViewById(R.id.emailLbl);
}
}
Typescript无法定义obj的类型,我应将哪种类型分配给obj?我尝试过
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
create = (Button) findViewById(R.id.setCreate);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
createProject();
}
});
}
public void createProject(){
final String subj = subject.getText().toString().trim();
final String projectNm = projectName.getText().toString().trim();
final String endDt = endDate.getText().toString();
final String members = addPeople.getText().toString();
if (TextUtils.isEmpty(subj) || TextUtils.isEmpty(projectNm) || TextUtils.isEmpty(endDt)) {
if (subj.isEmpty()){
Snackbar.make(findViewById(R.id.MyConstraintLayout), R.string.error_projecSubj,Snackbar.LENGTH_SHORT).show();
}
else if (projectNm.isEmpty()){
Snackbar.make(findViewById(R.id.MyConstraintLayout), R.string.error_projectName,Snackbar.LENGTH_SHORT).show();
}
else if (endDt.isEmpty()){
Snackbar.make(findViewById(R.id.MyConstraintLayout), R.string.error_projectDate,Snackbar.LENGTH_SHORT).show();
}
return;
}
mProgressDialog.setMessage("Creating new project...");
mProgressDialog.show();
DatabaseReference createNewProject = mPostDatabase.push();
Map<String, String> dataToSave = new HashMap<>();
dataToSave.put("subject", subj);
dataToSave.put("projectName", projectNm);
dataToSave.put("endDate", endDt);
dataToSave.put("members", members);
dataToSave.put("userid", mUser.getUid());
dataToSave.put("creationDate", String.valueOf(java.lang.System.currentTimeMillis()));
createNewProject.setValue(dataToSave);
mProgressDialog.dismiss();
startActivity(new Intent(SetProject.this, Main.class));
}
但是它不起作用,TS2322错误,有什么建议吗?
答案 0 :(得分:2)
在示例类型注释obj: [number,number,number] | [string,string,string]
中,打字稿看不到您是一个对象-它认为您obj
是 三元组或三元组-字符串元组。
我猜你想要更多这样的东西:
// inferred type is { arr1: number[], arr2: string[] }
const obj1 = {
arr1: [100, 30, 10],
arr2: ['hello', 'hello', 'hello']
}
// no compiler error because obj2 matches obj1
const obj2: { arr1: number[]; arr2: string[]; } = obj1