Advertisement
Synthoel

Untitled

May 21st, 2025
349
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let client: any
  2.  
  3. type OnItemAddedCb = (label: string) => void
  4. declare const onItemAdded: (cb: OnItemAddedCb) => void
  5. onItemAdded((label) => {
  6.     client.createSpeaker(label)
  7. })
  8.  
  9. type OnItemEditedCb = (id: string, newLabel: string) => void
  10. declare const onItemEdited: (cb: OnItemEditedCb) => void
  11. onItemEdited((id, newLabel) => {
  12.     client.updateSpeaker(id, newLabel)
  13. })
  14.  
  15. type OnItemDeletedCb = (id: string) => void
  16. declare const onItemDeleted: (cb: OnItemDeletedCb) => void
  17. onItemDeleted((id) => {
  18.     client.deleteSpeaker(id)
  19. })
  20.  
  21. // vs
  22.  
  23. type ChangeEvent =
  24.     | { action: 'add'; label: string }
  25.     | { action: 'edit'; id: string; newLabel: string }
  26.     | { action: 'delete'; id: string }
  27.  
  28. type OnCollectionChangedCb = (event: ChangeEvent) => void
  29. declare const onCollectionChanged: (cb: OnCollectionChangedCb) => void
  30. onCollectionChanged((event) => {
  31.     switch (event.action) {
  32.         case 'add': {
  33.             client.createSpeaker(event.label)
  34.             break
  35.         }
  36.         case 'edit': {
  37.             client.updateSpeaker(event.id, event.newLabel)
  38.             break
  39.         }
  40.         case 'delete': {
  41.             client.deleteSpeaker(event.id)
  42.             break
  43.         }
  44.     }
  45. })
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement