• Robert Knight's avatar
    Make service-using components typecheck correctly · 4be722ea
    Robert Knight authored
    Previously all components that used injected services did not have their
    usage type-checked because `withServices` returned `any`.
    
    This commit refactors the API of `withServices` to make it easier to
    typecheck and adds types. The major API change is that the list of injected
    services is now passed as a second argument to `withServices` rather
    than by setting an `injectedProps` property on the component. This makes
    it easy to infer that the component returned by `withServices(Widget,
    ['serviceA', 'serviceB'])` has the same props as `Widget` but without
    `serviceA` or `serviceB`.
    
    Making these changes also turned up a handful of mistakes in existing
    types which are fixed here:
    
     - Correct `auth` type used by `HelpPanel`
     - Correct type of `thread` prop used by `ThreadCard`
     - Correct optionality of boolean arguments in callbacks to `Excerpt`
     - Change `showActions` logic in `Annotation` to make it more obvious
       to TS that the actions are only shown when there is an annotation
     - Remove unused props passed to `GroupList`
    
    Additionally there was a type error with TopBar's `auth` prop which is
    less trivial to fix, so I have punted it to a future commit.
    4be722ea
AnnotationActionBar.js 3.83 KB