Как я могу передать атрибут в качестве параметра с Typescript? - PullRequest
0 голосов
/ 20 января 2020

Я новичок ie с Angular 8.
Я хотел бы передать массив интерфейсов в функцию сортировки, и я хотел бы передать атрибуты интерфейса в качестве параметров.
Пока я пробовал этот способ:

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();
}

Но я замечаю, что редактор (VSCode) сообщает мне о некоторых неточностях, в частности:

enter image description here enter image description here enter image description here

Я не могу расшифровать эти комментарии. Что я должен сделать, чтобы оптимизировать свою функцию?

Ответы [ 2 ]

1 голос
/ 20 января 2020

В вашем случае поле вводится как объект k, и c, вы не можете использовать объект в качестве индекса. Если вы хотите вызвать параметр, у вас есть 2 варианта:

const x = object.param;

Или

const x = object['param'];

В вашем случае ваш параметр 'field' должен быть строкой, тогда вы будете в состоянии сделать:

x[field]
1 голос
/ 20 января 2020

Вам не нужен параметр K:

sortBy<T>(field: keyOf T, arr: T[], mode: 'Asc' | 'Desc'): T[]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...