ts
CHAPTER 6 / 34
읽기 약 2분
SYNTAX
인터페이스 해부: 객체 타입 계약
핵심 개념
interface는 객체의 구조를 정의하는 타입 계약입니다. ? 로 선택적 속성, readonly로 읽기 전용 속성을 정의합니다. 클래스와 객체가 인터페이스를 implements하여 구조를 보장합니다. 인터페이스를 지우며 타입 계약이 어떻게 붕괴되는지 확인하십시오.
코드 분석
// interface 시뮬레이션
function validateTerminator(unit) {
const required = ['model', 'threat'];
const optional = ['status', 'location'];
const readonly = ['id'];
let valid = true;
const results = [];
required.forEach(k => {
if (unit[k] === undefined) { valid = false; results.push(`❌ 필수 속성 누락: ${k}`); }
else results.push(`✓ ${k}: ${unit[k]}`);
});
optional.forEach(k => results.push(`? ${k}: ${unit[k] ?? '(없음)'}`) );
readonly.forEach(k => results.push(`🔒 readonly ${k}: ${unit[k]}`) );
results.forEach(r => {
const el = document.createElement('div');
el.style.fontSize = '11px'; el.style.marginBottom = '4px'; el.style.color = r.startsWith('❌') ? '#10b981' : r.startsWith('✓') ? '#22c55e' : '#888';
el.textContent = r;
document.currentScript.parentElement.appendChild(el);
});
}
// interface Terminator { readonly id: number; model: string; threat: number; status?: string; location?: string; }
validateTerminator({ id: 1, model: 'T-800', threat: 8, status: 'ACTIVE' });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 안전성 관점에서 솔직하게 평가해줘.
⭐ 이것만 기억하세요
인터페이스 해부: 객체 타입 계약은 이 3가지만 확실히 잡으세요
1.객체 구조를 정의하지 않으면 존재하지 않는 프로퍼티에 접근해도 컴파일 타임에 잡히지 않습니다
2.interface는 객체가 가져야 할 프로퍼티와 타입을 선언하며, extends로 확장하고 implements로 클래스에 적용합니다
3.다음 챕터에서 인터페이스와 유사하지만 유니온·인터섹션이 가능한 타입 별칭을 배웁니다
공유하기
진행도 6 / 34