any any는 어떤 타입이어도 상관없는 타입입니다. TypeScript에선 컴파일 타임에 모두가 타입이 있어야 하므로 프로그래머와 TypeScript 둘 다 타입을 알 수 없는 상황에서는 기본 타입인 any라고 가정합니다. any로 뭐든지 할 수 있지만 꼭 필요한 상황이 아니라면 사용하지 않는 것이 좋습니다. 왜냐하면 컴파일 타임에 타입 체크가 정상적으로 이뤄지지 않기 때문입니다. 타입이란 값과 값으로 수행할 수 있는 작업의 집합입니다. any는 모든 값의 집합이므로 any는 모든 것을 할 수 있습니다. 즉, any를 사용하면 값이 JavaScript처럼 동작하기 시작하면서 타입 검사기라는 마법이 더 이상 작동하지 않게 됩니다. The any will continue to propagate throug..
Array JavaScript처럼 TypeScript 배열도 연결(concatenation), 푸시(pushing), 검색(searching), 슬라이스(slicing) 등을 지원하는 특별한 객체입니다. TypeScript는 T[]와 Array라는 두 가지 배열 문법을 지원합니다. 성능, 의미상 두 표현은 같습니다. let a = [1, 2, 3]; // number var b = ['a', 'b']; // string[] let c: string[] = ['a']; // string[] let d = [1, 'a']; // (string | number)[] const e = [1, 'b']; // (string | number)[] let f = ['red']; f.push('blue'); f.pus..
객체(Object) TypeScript의 객체(object) 타입은 객체의 형태(shape)를 정의합니다. 그러나 객체 타입만으로는 ({}로 만든) 간단한 객체와 (new를 사용해 만든) 복잡한 객체를 구분할 수 없습니다. 이는 JavaScript가 구조 기반 타입(structural type)을 갖도록 설계되었기 때문입니다. 따라서 TypeScript도 이름 기반 타입(nominal type) 스타일보다는 JavaScript 스타일을 선호합니다. 구조 기반 타입화 구조 기반 타입화에선 객체의 이름에 상관없이 객체가 어떤 프로퍼티를 갖고 있는지를 따집니다.(이름 기반 타입에선 이름을 따집니다.) 일부 언어에서는 덕 타이핑(duck typing)이라고 합니다(겉표지만 보고 책을 판단하지 않는 것과 같은 원..