Size: a a a

2021 April 01

RV

Roman V in Frontend UA
Eugene Obrezkov
и по факту вызов функции происходит с ContainerItem, а не с DeletableItem
Мне кажется наоборот, doDelete из ContainerProps хочет ContainerItem, у которого явно есть поле foo. Логично.
С другой стороны этого поля нет на DeletableItem. И именно DeletableItem передается в коллбек из DeleteItemButton.
источник

RV

Roman V in Frontend UA
Мне видится вообще какое-то противоречие, почему метод onDelete в принципе существует в двух разных экземплярах. doDelete: (item: ContainerItem) => void; и onDelete: (item: DeletableItem) => void;.
источник

DB

Dima Bildin in Frontend UA
Roman V
Мне видится вообще какое-то противоречие, почему метод onDelete в принципе существует в двух разных экземплярах. doDelete: (item: ContainerItem) => void; и onDelete: (item: DeletableItem) => void;.
Возможно ему нужен дополнительно isDeleteRestricted, который проставляется в Container
источник

EO

Eugene Obrezkov in Frontend UA
Dima Bildin
Возможно ему нужен дополнительно isDeleteRestricted, который проставляется в Container
через общий тип это вполне можно выразить и не плодить
источник

DB

Dima Bildin in Frontend UA
Eugene Obrezkov
через общий тип это вполне можно выразить и не плодить
Я там ничего не решаю)
источник

DB

Dima Bildin in Frontend UA
Ну и это вопрос уже не к типам
источник

DD

Dmytro Dovhan in Frontend UA
Roman V
Мне видится вообще какое-то противоречие, почему метод onDelete в принципе существует в двух разных экземплярах. doDelete: (item: ContainerItem) => void; и onDelete: (item: DeletableItem) => void;.
это просто вырожденный пример, где я пытался воспроизвести )
поэтому выглядит ненмого упорото

вобще идея была в том что кнопке DeleteItemButton не надо знать о каких либо других свойствах кроме необходимых ей, соотвественно не хотелось использовать один и тот же тип, или наследовать т.к. в теории может прилетать не только containerItem но и любой другой объект соотвествующий DeletableItem

я пока воткнул any
onDelete: (item: any) => void;
вместо
onDelete: (item: DeletableItem) => void;

но хотелось бы понять как это можно сделать красивее, не завязываясь на конкретный тип
источник

RV

Roman V in Frontend UA
Dmytro Dovhan
это просто вырожденный пример, где я пытался воспроизвести )
поэтому выглядит ненмого упорото

вобще идея была в том что кнопке DeleteItemButton не надо знать о каких либо других свойствах кроме необходимых ей, соотвественно не хотелось использовать один и тот же тип, или наследовать т.к. в теории может прилетать не только containerItem но и любой другой объект соотвествующий DeletableItem

я пока воткнул any
onDelete: (item: any) => void;
вместо
onDelete: (item: DeletableItem) => void;

но хотелось бы понять как это можно сделать красивее, не завязываясь на конкретный тип
источник

RV

Roman V in Frontend UA
Через дженерик
источник

EO

Eugene Obrezkov in Frontend UA
Roman V
Через дженерик
+
источник

EO

Eugene Obrezkov in Frontend UA
когда позанимаешься недолго переводами технических терминов, то начинает уже подёргивать от кальки 🙈
источник

DD

Dmytro Dovhan in Frontend UA
Roman V
Через дженерик
спасибо, а зачем с запятой? <T,> особенности типов в jsx?
источник

EO

Eugene Obrezkov in Frontend UA
Dmytro Dovhan
спасибо, а зачем с запятой? <T,> особенности типов в jsx?
опечатка
источник

DD

Dmytro Dovhan in Frontend UA
не без нее не работает
источник

EO

Eugene Obrezkov in Frontend UA
😳
источник

EO

Eugene Obrezkov in Frontend UA
о, тогда расскажите
источник

RV

Roman V in Frontend UA
Плюс я бы убрал конструкцию [index: string]: any; и таки наследовал любые типы айтемов от DeletableItem. Сейчас это работает из-за duck typing, это не очень хорошо, мне кажется
источник

RV

Roman V in Frontend UA
Dmytro Dovhan
спасибо, а зачем с запятой? <T,> особенности типов в jsx?
Это тайпскрипт кривой просто 😂
источник

EO

Eugene Obrezkov in Frontend UA
Roman V
Это тайпскрипт кривой просто 😂
та это просто jsx дизайнили вдохновлясь пхп
источник

RV

Roman V in Frontend UA
Ну ладно, jsx кривой)
источник