@p3trukh1n
NooB IN WeB

Чем в TypeScript отличаются обычная функция и стрелочная?

Добрый вечер.
Есть объект
let user: {a: string, b: number, c: () => void} = {
    a: "exampleString",
    b: 1337,
    c() {
        console.log("exampleMethod");
    }
};

И, я заметил, что если писать
let user: {a: string, b: number, c: () => void} = {
    //...

То в подсказках IDE метод `c` отображается, как property,
А если писать
let user: {a: string, b: number, c(): void} = {
    //...

То, как method.
Я понимаю, что это скорее всего и так логично, но в чем между ними таки весомая разница?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Robur
@Robur
Знаю больше чем это необходимо
c: () => void

это проперти у которого тип функция без параметров и ничего не возвращающая. Там мог быть бы и любой другой тип после :

c(): void

Это просто определение метода с именем с, без параметров и не возвращающая ничего..

Соответственно как вы определите, так вам ide и показывает - свойство или метод.
В работе разницы нет, но это два разных способа определить одно и то же.

Стрелочных функций в вашем примере нет от слова совсем.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@grinat
В контексте, у первой this это объект юзер, в случае стрелочной её this это внешний контекст.
Ответ написан
Ваш ответ на вопрос

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

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