ember-cli-htmlbars
ember-cli-htmlbars copied to clipboard
TemplateFactory type incompatible with setComponentTemplate type from @types/ember__component
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
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.