
인터페이스는 타입의 규칙을 지정하는 것입니다.
- 객체의 스펙
- 함수의 parameter (매개변수)
- 함수의 스펙, 반환 값
- 배열
- 클래스
interface를 앞에 적고 인터페이스 앞글자는 대문자로 이름을 지정합니다.
interface User {
  name:string;
  age:number;
}객체의 프로퍼티 값은 선언한 인터페이스의 타입과 동일하게 해야합니다.
let person: User = {
  name:'yongwoo', //string
  age:33, // number
}함수의 타입과 반환 값을 지정 할 수 있습니다.
interface login {
  (username: string, password: string): boolean;
}
let loginUser: login;
loginUser = function(id: string, pw: string) {
  console.log('로그인 했습니다');
  return true;
}배열의 인덱스로 접근하여 배열의 요소 타입을 지정 할 수 있습니다.
interface StringArray {
  [index: number]: string;
}
let arr: StringArray = ["a", "b", "c"];
console.log(arr[0]) // 'a'
console.log(arr[1]) // 'b'extends 를 적고 추가하고 싶은 interface 를 선언하면 타입이 복사됩니다.
interface Person {
  name:string;
  age:number;
}
interface Developer extends Person {
  language:string;
}
let cpat : Developer = {
  name:'lee',
  age:12,
  language: 'ts',
}