Skip to content

Обработать замечания студентов #220

@fey

Description

@fey
  • Перегрузка функций. https://github.com/hexlet-basics/exercises-typescript/blob/main/modules/20-functions/85-function-overloads/description.ru.yml

    Мне кажется, в задаче к этому уроку не имеет смысла реализовывать перегрузку функции, потому что у нас тип входных данных не меняется. Есть просто один необязательный параметр. Функция совершенно спокойно реализуется в одной единственной версии с этим необязательным параметром без перегрузки, и тест проходит. Если в решении учителя удалить первые две строки кода (перегрузку), ровным счётом ничего не поменяется и всё будет так же работать. Перегрузка имела бы смысл, если бы тип данных аргументов мог бы быть разным.
    https://ru.hexlet.io/topics/87857

  • Иерархия типов https://github.com/hexlet-basics/exercises-typescript/blob/main/modules/25-types/50-type-hierarcy/description.ru.yml

    Два вопроса по теории:

    let unknownValue: unknown = 1; const two: 2 = 2; const notTrue: false = false;
    
    unknownValue = two; unknownValue = notTrue; // OK
    

    Почему мы в переменную типа unknown можем присвоить значение типа number или литерального типа 2, а потом в эту же переменную присваиваем значение типа boolean или литерального false? То есть переменная типа unknown после присвоения ей какого-то первого конкретного значения так и остаётся unknown и позволяет дальше присваивать что угодно? Чем тогда unknown отличается от any? Я этого, честно сказать, так и не понял.

    
    const two = num as 2; // Явное нисходящее приведение
    
    const three = 3 as const; // Приведение к литеральному типу — нисходящее
    

    не понял, что такое восходящее и нисходящее приведение. Что конкретно делает, например, const three = 3 as const ? Какого типа будет константа three?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions