Типизация - ШРИ 2024

Рассмотрим TypeScript с точки зрения теории множеств, разберем контроль выполнения и дженерики.

Пікірлер: 7

  • @localhost666
    @localhost6666 күн бұрын

    {} - [] будет NaN, а не -0

  • @mukhindev

    @mukhindev

    5 күн бұрын

    Зависит от контекста в котором это выражение находится. {} - [] вернёт -0, ({} - []) вернёт NaN

  • @localhost666

    @localhost666

    5 күн бұрын

    @@mukhindev а в чем собственно разница данных выражений?

  • @localhost666

    @localhost666

    5 күн бұрын

    Признаю, действительно -0. Вопрос какого х*я?? Массив будет приведен к 0. Объект же е строке обжект обжект, которая далее станет NaN, итог NaN. Где ошибка в рассуждении?..

  • @mukhindev

    @mukhindev

    5 күн бұрын

    ​@@localhost666 без скобок {} определяется как блок (block statement), а со скобками как объект. Это особенности синтаксического разбора. К примеру, если это выражение присваивать через = переменной, парсеру однозначно понятно что {} не блок и будет тоже NaN.

  • @mukhindev

    @mukhindev

    5 күн бұрын

    По приведению массива к 0. Сначала возвращается пустая строка "", затем приведение пустой строки к числу (из-за +) даст 0. См. про методы valueOf и toString. Можно вот так "хакнуть" const array = [] array.valueOf = () => { return 42 } console.log(array + 5) // 47

Келесі