studye / typescript

타입스크립트는 자바스크립트랑 다른 언어인가요?
7 stars 0 forks source link

[Chapter3] Interfaces #11

Open jongmoon opened 7 years ago

jongmoon commented 7 years ago

Interfaces

Interface 타입 정의

// 이름 앞에 I prefix 는 Interace 를 칭하기 위해 저자가 사용한 네이밍 규칙
interface IComplexType {
  id: number;
  name: string;
}

잘 동작하는 코드

let complexType : IComplexType;
complexType = { id: 1, name : "test"};

잘 동작하지 않는 코드

let incompleteType: IComplexType;
incompleteType = {id: 1};

error TS2322: Type '{ id: number; }' is not assignable to type 'IComplexType'. Property 'name' is missing in type '{ id: number; }'.

Optional properties

반드시 속성을 정의하지 않아도 되는 속성 지정

interface IOptionalProp {
  id: number;
  name?: string; // 속성 뒤에 ? 표 표기
}

사용 예제

let idOnly : IOptionProp = {id: 1}; //id 만 지정가능
let idAndName : IOptionProp = {id:2, name: "idAndName"};//당연히 가능

idAndName = idOnly; // 가능

Interface 컴파일

Interface 는 컴파일 시간에 타입체킹을 위한 용도이며 JS 변환 시 Interface 코드로부터 코드를 생성하지 않는다는 점 참고