OPEN HYPER STEP
← 목록으로 (TypeScript)
TS · 26 / 34
ts
CHAPTER 26 / 34
읽기 약 2분
FUNCTION

TypeScript로 플러그인 시스템 구현


핵심 개념

인터페이스로 플러그인 계약을 정의하고 동적으로 등록/실행합니다. 타입 안전한 플러그인 아키텍처를 설계합니다. 확장 가능한 시스템 구조를 만드는 방법을 학습합니다. 플러그인 시스템을 지우며 확장성이 어떻게 사라지는지 확인하십시오.

코드 분석
TS📋 코드 (40줄)
<div style='font-family:monospace; padding:16px; background:#0d1117; color:#e8e8e8;'>
<div style='color:#10b981; margin-bottom:12px;'>PLUGIN SYSTEM</div>
<div id='plugin-out' style='font-size:11px; margin-bottom:12px;'></div>
<button onclick='runPlugins()' style='background:#10b981; color:#080808; border:none; padding:8px 16px; cursor:pointer; font-family:monospace; font-size:11px;'>RUN ALL PLUGINS</button>
<script>
  // interface Plugin { name: string; version: string; execute(ctx: Context): string; }
  class PluginSystem {
    constructor() { this._plugins = []; }
    register(plugin) {
      this._plugins.push(plugin);
      return this;
    }
    run(context) {
      return this._plugins.map(p => ({
        name: p.name,
        version: p.version,
        result: p.execute(context)
      }));
    }
  }

  const system = new PluginSystem();
  system
    .register({ name: 'LoggerPlugin', version: '1.0', execute: ctx => `[LOG] ${ctx.unit} 처리됨` })
    .register({ name: 'ThreatPlugin', version: '2.1', execute: ctx => `[THREAT] 위협도 ${ctx.threat} 분석 완료` })
    .register({ name: 'ReportPlugin', version: '1.5', execute: ctx => `[REPORT] ${ctx.unit} 임무 기록됨` });

  function runPlugins() {
    const out = document.getElementById('plugin-out');
    out.innerHTML = '';
    const results = system.run({ unit: 'T-800', threat: 8 });
    results.forEach(r => {
      const el = document.createElement('div');
      el.style.marginBottom = '6px';
      el.innerHTML = `<span style="color:#f59e0b;">${r.name} v${r.version}</span><br><span style="color:#888; font-size:10px;">${r.result}</span>`;
      out.appendChild(el);
    });
  }
</script>
</div>

AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
Claude

무료: Sonnet 4.6 / Pro $20/mo: Opus 4.6

이 TS '플러그인 시스템' 코드에서
타입 에러·any 남용·타입 안전성 누락을 찾아
엄격한 타입으로 리팩토링해줘.
ChatGPT

무료: GPT-5.5 / Plus $20/mo: GPT-5.5 Pro

'플러그인 시스템'를 실무에서 사용하는
패턴 3가지를 비교표로 보여주고
각각의 적합한 케이스를 알려줘.
Gemini

무료: 2.5 Flash / Pro $19.99/mo: 3.1 Pro

이 TS '플러그인 시스템' 관련 코드 전체의 타입 구조를
분석하고 제네릭·유틸리티 타입으로
개선할 포인트를 정리해줘.
Grok

무료: Grok 4.1 / SuperGrok $30/mo

TypeScript '플러그인 시스템'를 꼭 써야 하는지
개발 속도 vs 안전성 관점에서
솔직하게 평가해줘.

⭐ 이것만 기억하세요
TypeScript로 플러그인 시스템 구현 이 3가지만 확실히 잡으세요
1.기능 추가마다 코어 코드를 수정하면 매번 기존 기능이 깨질 위험이 있고, 서드파티 확장이 불가능합니다
2.플러그인 인터페이스를 정의하고 register/unregister로 관리하면 코어를 수정하지 않고 기능을 추가·제거합니다
3.다음 챕터에서 반복 연산 결과를 저장해서 성능을 높이는 캐싱 시스템을 구현합니다


공유하기
진행도 26 / 34