ember-cli / ember-cli/ember-cli-htmlbars

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

Offen
#774 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
JavaScript
Sterne
77
Forks
65
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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**
```ts
import templateOnlyComponent from '@ember/component/template-only';

interface LoadingSignature {
Element: HTMLElement; //
}

const LoadingComponent = templateOnlyComponent();
export default LoadingComponent;

declare module '@glint/environment-ember-loose/registry' {
export default interface Registry {
Loading: typeof LoadingComponent;
}
}
```
**my-app/app/components/index.hbs**
```hbs

Whatever

```

This does not work and throws the following error:
![image](https://github.com/ember-cli/ember-cli-htmlbars/assets/55881713/6736d645-e1ca-4d43-be86-d45984359dda)

It does work when using a JS file to overwrite the component:
**my-app/app/components/index.js**
```ts
// 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**
```hbs

Whatever

```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduziere die Komponentenüberschreibung mit den gezeigten TypeScript- und JavaScript-Dateien my-addon/addon und my-app/app und vergleiche sie anschließend mit der funktionierenden JavaScript-Überschreibung. Verfolge, wie die App-Komponente gegenüber der Komponente des Add-ons aufgelöst wird, und ermittle, warum die TypeScript-Version fehlschlägt. Als abgeschlossen gilt die Aufgabe, wenn eine TypeScript-App-Komponente und ein TypeScript-Template die JavaScript-Komponente des Add-ons ersetzen können und dabei die Glint-Deklarationen erhalten bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, typescript
Bereich
frontend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.