-
Notifications
You must be signed in to change notification settings - Fork 86
Description
-
Перегрузка функций. 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?