ember-cli-htmlbars icon indicating copy to clipboard operation
ember-cli-htmlbars copied to clipboard

TemplateFactory type incompatible with setComponentTemplate type from @types/ember__component

Open simonihmig opened this issue 1 year ago • 1 comments

With ember-cli-htmlbars 6.3.0 and latest version 4.0.22 of @types/ember__component, for this type of code...

import { hbs } from 'ember-cli-htmlbars';
import { setComponentTemplate } from '@ember/component';

export const Button = setComponentTemplate(
  hbs`
    <button>{{yield}}</button>`,
  templateOnly(),
);

I am getting this type error:

Argument of type 'import("/[...]/node_modules/ember-cli-htmlbars/lib/index").TemplateFactory' is not assignable to parameter of type 'TemplateFactory'.
  Property '__htmlbars_inline_precompile_template_factory' is missing in type 'import("/[...]/node_modules/ember-cli-htmlbars/lib/index").TemplateFactory' but required in type 'TemplateFactory'.ts(2345)
index.d.ts(14, 5): '__htmlbars_inline_precompile_template_factory' is declared here.

@types/ember__component is still defining TemplateFactory like this:

interface TemplateFactory {
    __htmlbars_inline_precompile_template_factory: any;
}

But https://github.com/ember-cli/ember-cli-htmlbars/pull/764 removed that __htmlbars_inline_precompile_template_factory property (used as a way of type branding I guess?), so I am indeed wondering how this is supposed to work now? Maybe just working with Ember's native types?

/cc @chriskrycho

simonihmig avatar Feb 20 '24 12:02 simonihmig

It should work with Ember's native types (I believe that’s part of why that change is shaped the way it is), but it may also make sense to back-port a compatibility fix to the DT types for it.

chriskrycho avatar Mar 02 '24 19:03 chriskrycho