Skip to content

@types/ember__component 4.0.6 update breaks Helper.compute without signature #1496

@mydea

Description

@mydea

Which package(s) does this problem pertain to?

  • @types/ember
  • @types/ember__string
  • @types/ember__polyfills
  • @types/ember__object
  • @types/ember__utils
  • @types/ember__array
  • @types/ember__engine
  • @types/ember__debug
  • @types/ember__runloop
  • @types/ember__error
  • @types/ember__controller
  • @types/ember__component
  • @types/ember__routing
  • @types/ember__application
  • @types/ember__test
  • @types/ember__test-helpers
  • @types/ember__service
  • @types/ember-data
  • @types/rsvp
  • Other
  • I don't know

The following code for helpers worked fine so far:

import Helper from '@ember/component/helper';

export default class MyHelper extends Helper {
  compute([name]: [string]) {
    return name;
  }
}

Now throws a type error, as there is no signature defined. I guess that means I have to duplicate the type declaration in the signature for the compute method now? It is a bit unfortunate that it cannot be inferred, as for example with something like this:

type PropName = 'prop1' | 'prop2';

interface HelperSignature {
  PositionalArgs: [obj: MyModel, propName: PropName];
}

export default class MyHelper extends Helper<HelperSignature> {
  compute([obj, propName]: [MyModel, PropName]) {
    // do something
  }
}

It becomes somewhat cumbersome to type this twice. Am I missing something here, or is this the only way to type a helper class like this going forward?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions