Open jongmoon opened 7 years ago
interface
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; }'.
반드시 속성을 정의하지 않아도 되는 속성 지정
interface IOptionalProp { id: number; name?: string; // 속성 뒤에 ? 표 표기 }
사용 예제
let idOnly : IOptionProp = {id: 1}; //id 만 지정가능 let idAndName : IOptionProp = {id:2, name: "idAndName"};//당연히 가능 idAndName = idOnly; // 가능
Interface 는 컴파일 시간에 타입체킹을 위한 용도이며 JS 변환 시 Interface 코드로부터 코드를 생성하지 않는다는 점 참고
Interfaces
interface
키워드를 사용하여 Interface 를 정의Interface 타입 정의
잘 동작하는 코드
잘 동작하지 않는 코드
error TS2322: Type '{ id: number; }' is not assignable to type 'IComplexType'. Property 'name' is missing in type '{ id: number; }'.
Optional properties
반드시 속성을 정의하지 않아도 되는 속성 지정
사용 예제
Interface 컴파일
Interface 는 컴파일 시간에 타입체킹을 위한 용도이며 JS 변환 시 Interface 코드로부터 코드를 생성하지 않는다는 점 참고