@kserg903

Зачем в имени функции используются угловые скобки?

Кажется, я понимаю зачем в имени функции используются угловые скобки, но хотел бы убедиться, что я не ошибаюсь. Есть следующий код:

function identity<T>(arg: T): T {
    return arg;
}
let numberOutput = identity<Number>(1);
console.log(numberOutput); // выведет "1"


Функция identity принимает число и возвращает число. При этом угловые скобки служат сигналом компилятору о том, что функция принимает именно число.

Таким образом, если в программе есть следующий вызов функции identity('qwerty') ,то ошибку программист заметит на этапе компиляции, а не во время выполнения.

Если бы угловые скобки не использовались:
function identity<T>(arg: T): T {
    return arg;
}
let numberOutput = identity(1);
console.log(numberOutput);


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

Я правильно понимаю назначение угловых скобок, не напутал ничего?
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
Функция identity принимает число и возвращает число.

нет, она принимает любой тип и возвращает этот же тип

аким образом, если в программе есть следующий вызов функции identity('qwerty') ,то ошибку программист заметит на этапе компиляции, а не во время выполнения.


В этом вызове нет никаких ошибок, все нормально - принимает строку и возвращает строку.

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

не заметил бы, потому что там ошибки нет.

ошибка будет если вы напишите
const x: number = identity('aaa')
//или 
const x: string = identity(1)
// или любой другой вариант где типы не совпадут.


написать identity<number>(1) можно но смысла нет, это совершенно то же самое что и identity(1)

Прочитайте что такое Generics, чтобы иметь понимание "зачем нужны эти скобки" в целом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы