好吧,我试图做一些我认为完全不自然的事情。
我需要做的是,根据if
返回不同的值,如下所示:
if(add)
return {exists: myExists, key: myKey};
return myExists;
但是当我在别处调用函数的结果时,我得到了error TS2339: Property 'exists' does not exist on type '{ exists: boolean; key: number; } | boolean'.
的编译。
这是我收到错误的地方(return语句位于IsInDays(value, add)
:
AddDay(value){
var datas = this.IsInDays(value, true);
if(!datas.exists)
this.days.push(value);
else{
this.days.splice(datas.key, 1);
}
console.log(this.days);
}
我这样做是因为我不知道如何在对象中获取exists
语句(调用函数)的[ngClass]
值:/ < / p>
如果有人知道不同的方式会很棒。
答案 0 :(得分:0)
您可以使用以下可选类型执行此操作:
function doesStuff(condition: boolean): string | { name: string, age: number } {
if (condition) {
return {name: 'A', age: 5};
}
return 'not found';
}
答案 1 :(得分:0)
布尔值没有exists
,因此!datas.exists
不起作用。使用typeof datas === "boolean"
进行检查。
答案 2 :(得分:-1)
没关系。
我使用了我的循环两次,我只是想优化我的代码。以下是[ngClass]
语句的函数:
IsInDays(value){
for (var item of this.days) {
if(item == value){
return true;
}
}
}
答案 3 :(得分:-1)
我遇到了一个SONARQUBE问题,“必须使用过滤器的返回值”。
这是发行代码:-
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataTable dt = new DataTable();
if (dataGridView1.DataSource != null)
{
dt = (DataTable)dataGridView1.DataSource;
if (dt.Rows.Count > 0)
{
DataRow modifiedRow = dt.Rows[e.RowIndex];
if (dataGridView2.DataSource != null)
{
dt = (DataTable)dataGridView2.DataSource;
//"Id" is name of the column that has unique, non-nullable values
if (dt.Rows.Count > 0 && dt.Rows.OfType<DataRow>().Where(x => x["Id"].ToString() == modifiedRow["Id"].ToString()) != null)
{
dt.Rows.Remove(dt.Rows.OfType<DataRow>().Where(x => x["Id"].ToString() == modifiedRow["Id"].ToString()).ToList()[0]);
}
}
else
{
dt = new DataTable();
}
dt.Rows.Add(modifiedRow);
}
}
dataGridView2.DataSource = dt;
}
这是解决方案:-
private Foo(Data: Array<any>) {
let result = [];
Data.filter((item: any) => {
if (!this.IsAlreadyExist(result, item.Name)) {
result.push({
Name: item.Name,
Id: item.Id
});
}
});
return result;
}