ts
CHAPTER 26 / 34
읽기 약 2분
FUNCTION
TypeScript로 플러그인 시스템 구현
핵심 개념
인터페이스로 플러그인 계약을 정의하고 동적으로 등록/실행합니다. 타입 안전한 플러그인 아키텍처를 설계합니다. 확장 가능한 시스템 구조를 만드는 방법을 학습합니다. 플러그인 시스템을 지우며 확장성이 어떻게 사라지는지 확인하십시오.
코드 분석
<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