Angular 如何使用Typescript将属性作为参数传递?

Angular 如何使用Typescript将属性作为参数传递?,angular,typescript,angular8,Angular,Typescript,Angular8,我是个有棱角的新手。 我希望将接口数组传递给排序函数,并希望将接口属性作为参数传递 目前,我已经尝试过这种方式: sortBy<T, K keyof T>(field: K, arr: T[], mode: 'Asc' | 'Desc'): T[] { const res = arr.sort((x, y) => x[field].localCompare(y[field], undefined, { sesitivity: 'base' })); retur

我是个有棱角的新手。
我希望将接口数组传递给排序函数,并希望将接口属性作为参数传递
目前,我已经尝试过这种方式:

sortBy<T, K keyof T>(field: K, arr: T[], mode: 'Asc' | 'Desc'): T[] {
    const res = arr.sort((x, y) => x[field].localCompare(y[field], undefined, { sesitivity: 'base' }));

    return mode === 'Asc'
      ? res
      : res.reverse();
}
sortBy(字段:K,arr:T[],模式:“Asc”|“Desc”):T[]{
const res=arr.sort((x,y)=>x[field].localCompare(y[field],未定义,{sesitivity:'base'}));
返回模式==“Asc”
?res
:res.reverse();
}
但是我注意到编辑器(VSCode)向我报告了一些不准确的地方,特别是:




我无法解读这些评论。如何优化函数?

您不需要K参数:

sortBy<T>(field: keyOf T, arr: T[], mode: 'Asc' | 'Desc'): T[]
sortBy(字段:keyOf T,arr:T[],模式:“Asc”|“Desc”):T[]

您不需要K参数:

sortBy<T>(field: keyOf T, arr: T[], mode: 'Asc' | 'Desc'): T[]
sortBy(字段:keyOf T,arr:T[],模式:“Asc”|“Desc”):T[]

在您的情况下,字段被键入为对象k,而ofc则不能使用对象作为索引。如果要调用参数,有两个选项:

const x = object.param;

在您的情况下,参数“field”必须是字符串,然后您可以执行以下操作:

x[field]

在您的情况下,字段被类型化为对象k,而ofc不能使用对象作为索引。如果要调用参数,有两个选项:

const x = object.param;

在您的情况下,参数“field”必须是字符串,然后您可以执行以下操作:

x[field]

现在,
类型“T[keyof T]”上不存在属性“localCompare”
并且不编译。其余的都可以。现在类型“T[keyof T]”上不存在属性“localCompare”并且不编译。其余部分正常。VSCode上没有错误,但控制台中有错误
错误类型错误:x[field]。localCompare不是一个函数
,这会影响排序的功能。这意味着,您的x[field]对象没有函数localCompare,您试图控制台。记录变量?我的错误,我忘记了e:)VSCode上没有错误,但是控制台
error-TypeError:x[field]中有一个错误。localCompare不是一个函数
,它会影响排序的功能。这意味着,您的x[field]对象没有函数localCompare,您尝试了console.log变量?我的错,我忘记了一个e:)