Вопрос:

Не удается найти имя «Многие» - Обновление до TypeScript 3.1.6

angular typescript lodash typescript3.0

22 просмотра

3 ответа

1223 Репутация автора

Недавно я обновил свой проект Angular с 6 до 7, и у меня возникла проблема с orderByфункцией, предоставляемой lodash (v4.7.11).

Ошибка при передаче строки orderByтретьему параметру

Аргумент типа 'string' не может быть назначен параметру типа Many<boolean | "desc" | "asc">.

Моя переменная сортировки названа, sortи я попытался объявить ей тип, а sort: Many<boolean | "desc" | "asc">затем я получил ошибку

Не могу найти имя «Многие»

Как мне это решить?

Моя машинописная версия 3.1.6.

Автор: Aakash Verma Источник Размещён: 12.06.2019 06:09

Ответы (3)


0 плюса

2273 Репутация автора

ManyТип ожидает массив значений , как следует из названия. использование[ "desc" ]

Редактировать: при дальнейшей проверке определений типов Manyучитывает как массивы, так и отдельные значения. Many<T> = T | ReadOnlyArray<T> Рабочие примеры:

orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  'asc')
orderBy([ { name: 'john' }, { name: 'kate' }], [ 'name' ],  [ 'asc' ])
Автор: Avin Kavish Размещён: 12.06.2019 06:19

0 плюса

1774 Репутация автора

Я вижу в документации подобный пример и не вижу много, о чем вы упоминаете?

var users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 40 },
  { 'user': 'barney', 'age': 36 }
];

// Sort by `user` in ascending order and by `age` in descending order.
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

Может быть, вы можете использовать

_.orderBy(users, ['user', 'age'], ['asc']);
Автор: Tony Ngo Размещён: 12.06.2019 06:19

0 плюса

1223 Репутация автора

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

Это точная строка кода, которую я использую

this.actions = _orderBy(this.actions, columnName, (this.sort.dir || this.defaultSort.dir))

где машинопись выдает ошибку во время компиляции, как указано выше.

Теперь я должен был упомянуть об этом в вопросе, который я не передаю напрямую ascили descвыражении, которое оценивает одно из них.

Я просто должен был сделать следующее, чтобы это работало

[(this.sort.dir || this.defaultSort.dir) === 'asc' ? 'asc' : 'desc']

И поэтому, давая интерпретатору понять, что любое из значений может быть единственным возможным выходом.

Таким образом, любой, в основном каждый, кто будет передавать строковую переменную, которая будет иметь одно из двух значений, может воспользоваться этим небольшим хаком, чтобы все заработало.

Автор: Aakash Verma Размещён: 12.06.2019 04:34
Вопросы из категории :
32x32