Rumah > hujung hadapan web > tutorial js > Don &#T menggunakan jenis jenis seperti ini. Gunakan corak peta sebaliknya

Don &#T menggunakan jenis jenis seperti ini. Gunakan corak peta sebaliknya

DDD
Lepaskan: 2025-01-29 16:31:08
asal
731 orang telah melayarinya

Pelaksanaan TypeScript ini mempamerkan proses refactoring untuk meningkatkan fleksibiliti dan penyelenggaraan. Mari kita tegangkannya untuk kejelasan dan aliran yang lebih baik.

Meningkatkan fleksibiliti typescript dengan corak peta: Kajian kes

Semasa projek baru -baru ini, saya menghadapi pelaksanaan TypeScript yang, walaupun berfungsi, tidak mempunyai fleksibiliti. Pos ini memperincikan masalah, penyelesaiannya menggunakan corak peta, dan bagaimana pendekatan ini meningkatkan pemeliharaan kod.

Jadual Kandungan

  1. Masalah awal
  2. Batasan Pendekatan Asal
  3. Melaksanakan penyelesaian corak peta
  4. Pelaksanaan Kod Bersih
  5. menguatkuasakan keselamatan jenis dengan reaksi yang dibenarkan
  6. Perbandingan visual
  7. Kesimpulan

1. Masalah awal

Kod asal menggunakan jenis jenis ini:

<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>
Salin selepas log masuk
jenis

ini digunakan dalam fungsi pemarkahan: FinalResponse

<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>
Salin selepas log masuk

2. Batasan Pendekatan Asal

Menambah tindak balas baru yang diperlukan pengubahsuaian di pelbagai fail (,

, dan berpotensi yang lain). Gandingan ketat ini meningkatkan risiko kesilapan dan membuat kod kurang dipelihara. FinalResponse.ts calculator.ts

3. Melaksanakan penyelesaian corak peta

Untuk menangani ini, pendekatan yang lebih dinamik menggunakan struktur seperti

dilaksanakan:

Map

<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>
Salin selepas log masuk
4. Pelaksanaan kod bersih

fungsi sekarang menggunakan

:

calculateScore ReactionMap

5. Menguatkuasakan Keselamatan Jenis Dengan Reaksi yang Dibenarkan
<code class="language-typescript">// calculator.ts
export const calculateScore = (
  // ... input parameters ...
  reactions: ReactionMap,
): FinalResponse => {
  // Score calculation logic...
};</code>
Salin selepas log masuk

Walaupun menawarkan fleksibiliti, sangat penting untuk mengekalkan keselamatan jenis. Jenis kesatuan mengehadkan kekunci tindak balas yang dibenarkan, menghalang penambahan tindak balas sewenang -wenangnya.

ReactionMap 6. Perbandingan visual AllowedReactions

7. KESIMPULAN Don Don Pendekatan refactored ini mengimbangi fleksibiliti dan keselamatan jenis. Menambah tindak balas baru hanya memerlukan mengemas kini jenis

, meningkatkan daya tahan dan mengurangkan risiko kesilapan berbanding dengan reka bentuk yang ditambah dengan ketat asal. Penggunaan jenis

dengan berkesan memancarkan manfaat peta tanpa overhead runtime objek .

Atas ialah kandungan terperinci Don &#T menggunakan jenis jenis seperti ini. Gunakan corak peta sebaliknya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan