TypeScript : 인터페이스
인터페이스 기본
객체 타입을 정의 할때 사용하는 문법입니다.
interface Jobs {
name : string;
money : number;
}
var marketer: Jobs = { name : '마케터', money : 1000 }
var designer: Jobs = { name : '디자이너', money : 1000 }
함수내에서의 인터페이스
interface Jobs {
name : string;
money : number;
}
function logJobs(job : Jobs) {
console.log(job.money);
}
let designer = { name:'디자이너', money : 10000 }
logJobs(designer); // 10000
필수가 아닌 속성도 선언할 수 있습니다.
interface Jobs {
name : string;
money? : number;
}
읽기 전용 속성도 가능 합니다.
interface Jobs {
readonly name: string;
}
인터페이스 상속
인터페이스는 상속도 가능합니다.
자식 인터페이스에서는 부모 인터페이스의 타입을 모두 보장해야 합니다.
interface Jobs {
name : string;
money? : number;
}
interface Company extends Jobs {
company : string
}
var my : Company = {
name : '디자이너',
company : '구글'
}
인터페이스 인덱싱
인터페이스도 인덱싱 정의가 가능합니다.
배열 인덱싱
interface StringArray {
[index: number] : string
}
const Fruits = ['Banana','Apple','Orange']
Fruits[1]; // Apple
일반 배열처럼 숫자 인덱스를 통해 접근할 수 있습니다.
객체 인덱싱
객체의 키 값도 정의가 가능 합니다.
interface GameUser {
[level:string] : number;
}
var ng = {
easy : 100,
normal : 350,
hard : 50
}
위처럼 객체의 키 이름은 명시하지 않고 키의 타입과 키 값의 타입만 명시하는 문법을 인덱스 시그니처라고 합니다.
아래 형태로도 가능합니다.
interface Person {
[another: string] : string | number
name : string;
age : number
}