У вас есть ошибка, потому что оператор +
ограничен для двух основных типов string
и number
, вы можете использовать его только для этих двух или подтипов, таких как 1
или abc
. В вашем случае видимым вы хотите работать только с типом number
(у вас есть локальный s
этого типа), я предлагаю удалить тип generi c, потому что эта функция всегда работает с числами:
function somme(...nombres: number[]): number {
let s: number = 0;
for (let nombre of nombres) {
s += nombre;
}
return s;
}
В конце концов вы можете сохранить generi c (все еще не вижу причин), но не для возврата, поскольку return - это сумма, а не то же число, которое вы получаете в качестве аргумента:
function somme<T extends number>(...nombres: T[]): number {
let s: number = 0;
for (let nombre of nombres) {
s += nombre;
}
return s;
}
Вы не можете имеют возвращаемый тип T
, потому что это будет означать, что если вы скажете T = 1
, тогда return будет иметь значение 1
, и в действительности будет суммой всех значений 1
в заданном в качестве аргумента массиве, поэтому сумма будет T * arr['length']
и такой тип невозможен в TS, потому что нет такой вещи как операции типа арифмети c.