Heim >Web-Frontend >js-Tutorial >Verwenden Sie keine solchen Typ -Typ -Typen. Verwenden Sie stattdessen das Kartenmuster

Verwenden Sie keine solchen Typ -Typ -Typen. Verwenden Sie stattdessen das Kartenmuster

DDD
DDDOriginal
2025-01-29 16:31:08781Durchsuche

Diese Typscript -Implementierung zeigt einen Refactoring -Prozess zur Verbesserung der Flexibilität und Wartbarkeit. Lassen Sie es uns für Klarheit und verbesserten Fluss umformulieren.

Flexibilität der Typenkript mit dem Kartenmuster verbessern: Eine Fallstudie

Während eines aktuellen Projekts stieß ich auf eine Typuskriptimplementierung, die zwar funktionsfähig war, aber flexibilität. In diesem Beitrag wird das Problem, seine Lösung mit dem Kartenmuster und wie dieser Ansatz die Code -Wartbarkeit verbessert.

verbessert.

Inhaltsverzeichnis

  1. Das anfängliche Problem
  2. Einschränkungen des ursprünglichen Ansatzes
  3. Implementierung der Kartenmusterlösung
  4. Implementierung von Clean Code
  5. Durchsetzung der Sicherheitstypsicherheit mit zulässigen Reaktionen
  6. visuelles Vergleich
  7. Schlussfolgerung

1. Das anfängliche Problem

Der ursprüngliche Code verwendete folgende Typen:
<code class="language-typescript">// Reaction.ts
export type Reaction = {
  count: number;
  percentage: number;
};

// FinalResponse.ts
import { Reaction } from './Reaction';

export type FinalResponse = {
  totalScore: number;
  headingsPenalty: number;
  sentencesPenalty: number;
  charactersPenalty: number;
  wordsPenalty: number;
  headings: string[];
  sentences: string[];
  words: string[];
  links: { href: string; text: string }[];
  exceeded: {
    exceededSentences: string[];
    repeatedWords: { word: string; count: number }[];
  };
  reactions: {
    likes: Reaction;
    unicorns: Reaction;
    explodingHeads: Reaction;
    raisedHands: Reaction;
    fire: Reaction;
  };
};</code>

FinalResponse Dieser

-Typ wurde in einer Bewertungsfunktion verwendet:
<code class="language-typescript">// calculator.ts
export const calculateScore = (
  // ... input parameters ...
  reactions: {
    likes: Reaction;
    unicorns: Reaction;
    explodingHeads: Reaction;
    raisedHands: Reaction;
    fire: Reaction;
  },
): FinalResponse => {
  // Score calculation logic...
};</code>

2. Einschränkungen des ursprünglichen Ansatzes

FinalResponse.ts Hinzufügen einer neuen Reaktion erforderte Änderungen in mehreren Dateien (calculator.ts,

und möglicherweise andere). Diese enge Kopplung erhöhte das Fehlerrisiko und machte den Code weniger aufrechterhalten.

3. Implementierung der Kartenmusterlösung

Map Um dies anzugehen

<code class="language-typescript">// FinalResponse.ts
import { Reaction } from './Reaction';

type AllowedReactions =
  | 'likes'
  | 'unicorns'
  | 'explodingHeads'
  | 'raisedHands'
  | 'fire';

export type ReactionMap = {
  [key in AllowedReactions]: Reaction;
};

export type FinalResponse = {
  // ... other properties ...
  reactions: ReactionMap;
};</code>

4. Clean Code Implementierung

Die Funktion

verwendet jetzt die calculateScore: ReactionMap

<code class="language-typescript">// calculator.ts
export const calculateScore = (
  // ... input parameters ...
  reactions: ReactionMap,
): FinalResponse => {
  // Score calculation logic...
};</code>

5. Durchsetzung der Typensicherheit mit zulässigen Reaktionen

Während das

Flexibilität bietet, ist es entscheidend, die Sicherheit der Typ zu erhalten. Der ReactionMap -Nionentyp beschränkt die zulässigen Reaktionstasten und verhindert die Zugabe beliebiger Reaktionen. AllowedReactions

6. Visueller Vergleich

Don Don

7. Schlussfolgerung

Dieser nachgeaktete Ansatz gleicht die Flexibilität und die Type von Typen aus. Das Hinzufügen neuer Reaktionen erfordert nur die Aktualisierung des

-Typs, wodurch die Wartbarkeit signifikant verbessert und das Fehlerrisiko im Vergleich zum ursprünglichen eng gekoppelten Design verringert wird. Die Verwendung eines AllowedReactions -Typs emuliert effektiv die Vorteile einer Karte ohne den Laufzeitaufwand eines Record -Objekts. Map

Das obige ist der detaillierte Inhalt vonVerwenden Sie keine solchen Typ -Typ -Typen. Verwenden Sie stattdessen das Kartenmuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn