function<T>(x:T):T{
return x;
};
//то же самое, но стрелочной функцией, не работает
const someFunction:<T>(x:T)=>T = <T>(x:T):T=>x;
Почему ?? Хотелось бы знать
Если заданы типы в переменной, зачем задавать их в сигнатуре?
не совсем понимаю вопрос, сигнатура имеете ввиду дженерики ? Цель дженериков ведь сделать динамичные типы, когда вызываешь тогда назначаешь какой тип
дженерики иногда конфликтуют с jsx. тут именно этот случай. задать констрейнт в значении, всё будет прекрасно работать const someFunction: (<T>(x:T) => T) = <T extends unknown>(x:T):T=>x;
я имею ввиду если написать вот так const someFunction: <T>(x:T) => T = (x) => x; ничего не изменится. в сигнатуре (уже в значении функции) не обязательно писать типы если всё детально расписано в типе переменной которой всё присваивается
аа, вы это имели ввиду, да, вы правы, но вообще щас хочу максимально понять тайпскрипт, ее особенности
вот тут не поняла почему так заработало <T extends unknown>(x:T):T=>x; Как он может конфликтовать с jsx Каком разделе документации прочитать об этом ? Contstains of generics ?
не помню задокументированно ли это, но если посмотреть почему именно ругается тс, там можно найти ответ на то что тут виноват жсх
щас дебажу, кажется обнаружу почему
Спасибо)
Я поняла Черт возьми <T> компилятор понимает это как тег, а не как дженерик <T extends unknown> начинает нормально понимать что это тег Поняла теперь
Обсуждают сегодня