interface 인터페이스 이름 { 속성:타입 }
위와 같은 방식으로 속성의 타입을 정하여 사용한다.
interface person {
name:string;
age:number;
}
function infomation(obj:person) {
console.log(obj.name)
} //ji출력
let person2 = {name:'ji', age:10}
infomation(person2)
information의 인자는 person과 같은 타입을 가져야하므로 age에 10(number)대신 '10'(string)이라는 값을 넣을 경우 타입이 맞지 않아 에러가 난다.
interface person {
name:string;
age:number;
}
function infomation(obj:person) {
console.log(obj.name)
}
let person2 = {name:'ji'}
infomation(person2)
만약 위처럼 person2에 name속성만 부여한다면 오류가 뜬다.
age의 값이 없기 때문이다. 그래서
interface person {
name:string;
age?:number;
}
❓를 이용하여 optional처리를 해주면 오류를 없앨 수 있다.
interface plus {
(num:number):number;
}
const math:plus = function(a){
return a*2
}
math(3)
함수의 인터페이스에는 타입이 선언된 파라미터 리스트와 리턴 타입을 정의한다.
마찬가지로 math('3')처럼 string을 넣으면 타입 오류가 발생한다.
interface person {
name:string;
age:number;
}
interface skills extends person{
skill:string;
}
const coder:skills = {
name:'아주 멋있는 이름',
age:10,
skill:'ts'
}
extends 키워드를 이용하여 person의 속성들을 상속받고 skill:string;
를 추가하면 interface를 새로 만들지 않아도 필요한 속성만 추가하여 이용할 수 있다.