Skip to content

app's TS files do not properly overwrite an addon's JS files #774

@BoussonKarel

Description

@BoussonKarel

I have the following example component in my addon:

my-addon/addon/components/example/index.ts

import templateOnly from '@ember/component/template-only';
export default templateOnly();
```hbs
**my-addon/addon/components/example/index.hbs**
Whatever
``` **my-addon/app/components/example/index.js** ```js export { default } from 'my-addon/components/loading'; ```

Then in my app I completely replace it with a new template AND "backing class" with some Glint because why not:
my-app/app/components/index.ts

import templateOnlyComponent from '@ember/component/template-only';

interface LoadingSignature {
  Element: HTMLElement; // <i>
}

const LoadingComponent = templateOnlyComponent<LoadingSignature>();
export default LoadingComponent;

declare module '@glint/environment-ember-loose/registry' {
  export default interface Registry {
    Loading: typeof LoadingComponent;
  }
}

my-app/app/components/index.hbs

<div>Whatever</div>

This does not work and throws the following error:
image

It does work when using a JS file to overwrite the component:
my-app/app/components/index.js

// I have lost all my Glint stuff, because it's a JS file :'(
import templateOnlyComponent from '@ember/component/template-only';
const LoadingComponent = templateOnlyComponent();
export default LoadingComponent;

my-app/app/components/index.hbs

<div>Whatever</div>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions