typescript error when comparing two arrays with different types
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 76/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- javascript, typescript
- Bereich
- backend-api-design
Rechercherichtung
Lies die diffArrays-Deklaration in src/diff/array.ts an den verlinkten Zeilen und vergleiche ihre generische Signatur mit der älteren @types/jsdiff-Signatur aus dem Issue. Prüfe die zugehörigen Optionstypen und Ergebnistypen für Array-Diffs und reproduziere dann den TypeScript-Fehler aus dem Beispiel. Die Aufgabe ist erledigt, wenn Arrays mit unterschiedlichen Elementtypen mit einem korrekt typisierten Comparator akzeptiert werden und das Ergebnis beide Elementtypen abbildet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
in my codebase i deliberately compare arrays of two different types, with a custom comparator to compare them in a typesafe way, for example:
import { diffArrays } from 'diff';
const array1 = [1, 2, 3];
const array2 = ['1', '2'];
const result = diffArrays(array1, array2, {
comparator: (oldValue, newValue) => oldValue.toString() === newValue }
);
this no longer works since updating jsdiff to the version with bundled typescript types:
asdf.ts:7:35 - error TS2769: No overload matches this call.
The last overload gave the following error.
Argument of type 'string[]' is not assignable to parameter of type 'number[]'.
Type 'string' is not assignable to type 'number'.
7 const result = diffArrays(array1, array2, { comparator: (oldValue, newValue) => oldValue.toString() === newValue });
~~~~~~
node_modules/.pnpm/[email protected]/node_modules/diff/libesm/diff/array.d.ts:17:25
17 export declare function diffArrays<T>(oldArr: T[], newArr: T[], options?: DiffArraysOptionsNonabortable<T>): ChangeObject<T[]>[];
~~~~~~~~~~
The last overload is declared here.
asdf.ts:7:58 - error TS7006: Parameter 'oldValue' implicitly has an 'any' type.
7 const result = diffArrays(array1, array2, { comparator: (oldValue, newValue) => oldValue.toString() === newValue });
~~~~~~~~
asdf.ts:7:68 - error TS7006: Parameter 'newValue' implicitly has an 'any' type.
7 const result = diffArrays(array1, array2, { comparator: (oldValue, newValue) => oldValue.toString() === newValue });
it used to work in @types/jsdiff because it used two generics:
export function diffArrays<TOld, TNew>(
oldArr: TOld[],
newArr: TNew[],
options?: ArrayOptions<TOld, TNew>,
): Array<ArrayChange<TOld | TNew>>;
whereas the new version only uses one generic:
- Vorherrschende Sprache
- JavaScript
- Sterne
- 9.2k
- Forks
- 555
- Ø Merge
- 1 T. 9 Std.
- Gemergte PRs (30 T.)
- 5
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus kpdecker/jsdiff
-
Migrating to ESM onlyOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
kpdecker/jsdiff#703 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Applying a patch with a fuzzFactor can be very very slowEvtl. vergeben @json-open-source hat das vor 40 Tagen übernommen. Offenperformance
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
kpdecker/jsdiff#692 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 45/100
kpdecker/jsdiff#684 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
reversing a text diff?Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
kpdecker/jsdiff#629 · 7 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 30/100
kpdecker/jsdiff#624 · 6 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in kpdecker/jsdiff
Ähnliche Issues
-
area:ui
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
openfootmanager/openfootmanager#1365 ·
Maintainer antworten meist innerhalb von 1 Tag
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
NuSkooler/enigma-bbs#988 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
-
Thêm tệp .envOffen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 67/100
mikemccand/luceneutil#644 ·
Maintainer antworten meist innerhalb von 4 Tagen