Как ввести универсальную функцию c, которая использует Array.pu sh ()? - PullRequest
0 голосов
/ 07 августа 2020

При работе с дженериками:

function newArr<T>(arr: T[], itemToAdd: string): T[] {
  return arr.push(itemToAdd);
}

const arr: string[] = ["item 1", "item 2", "item 3"];

const itemToAdd: string = "item 4";

newArr<string>(arr, itemToAdd);

Я столкнулся с этой ошибкой при наведении курсора на itemToAdd.

фрагмент кода

Argument of type 'number' is not assignable to parameter of type 'T'.
  'number' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint '{}'.

Как лучше всего решить эту проблему с помощью приличной безопасности типов?

1 Ответ

0 голосов
/ 07 августа 2020

Я получил ответ, выполнив:

function newArr<T>(arr: T[], itemToAdd: T): T[] {
  arr.push(itemToAdd);
  return arr;
}

Я забыл установить itemToAdd: T и не возвращал массив.

...