loopbackio / loopbackio/loopback-next

TypeScript error: Property 'toString' does not exist in has-many-through.inclusion-resolver.ts after upgrading to @loopback/repository@8.0.2

Offen
#11,123 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug
Vorherrschende Sprache
TypeScript
Sterne
5.1k
Forks
1.1k
Ø Merge
2 T. 21 Std.
Gemergte PRs (30 T.)
27

Beschreibung

Describe the bug

Steps to reproduce

  1. Upgrade @loopback/repository from 6.1.5 to 8.0.2 (other LoopBack packages remain at compatible versions).
  2. Build the project with TypeScript strict mode enabled.

Current behavior

TypeScript compilation fails with:
node_modules/@loopback/repository/src/relations/has-many/has-many-through.inclusion-resolver.ts:255:36 - error TS2339: Property 'toString' does not exist on type 'NonNullable<(Target & TargetRelations)[Extract<keyof Target, string>]>'.

255 targetEntity[targetKey]?.toString() ?? targetEntity[targetKey],


node_modules/@loopback/repository/src/relations/has-many/has-many-through.inclusion-resolver.ts:269:35 - error TS2339: Property 'toString' does not exist on type 'NonNullable<(Through & ThroughRelations)[Extract<keyof Through, string>]>'.

269 x => x[throughKeyTo]?.toString() ?? x[throughKeyTo],

### Logs

```shell

```

### Additional information

_No response_

### Reproduction

import {Entity, model, property, hasMany} from '@loopback/repository';  @model() export class Category extends Entity {   @property({id: true})   id: number;    @hasMany(() => Product, {through: {model: () => CategoryProduct}})   products?: Product[]; }  @model() export class Product extends Entity {   @property({id: true})   id: number; }  @model() export class CategoryProduct extends Entity {   @property()   categoryId: number;    @property()   productId: number; }

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Öffne src/relations/has-many/has-many-through.inclusion-resolver.ts und untersuche die Ausdrücke in den Zeilen 255 und 269, die im strict mode TS2339 auslösen. Reproduziere das Upgrade und den strikten TypeScript-Build mit den Modellen Category, Product und CategoryProduct; abgeschlossen ist die Aufgabe, wenn der Build ohne diese Fehler erfolgreich ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
nodejs, typescript
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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