Til

    console.log()로 [object]를 찍고 싶을 때

    It's easy~ peasy~lemon-squeeezy~ // 기존에 data라는 오브젝트가 있다고 가정. console.log(JSON.stiringify(data)); // or alert(JSON.stringify(data)); JSON.stringify() 와 JSON.parse() JSON.stringify(value[, replacer, space]) : value를 JSON형태의 값으로 변환시켜주는 함수 JSON.stringify사용방법을 뜯어보면 value는 필수값으로 JSON형태로 변환할 값을 입력한다. replacer와 space는 옵션값이며, replacer는 배열일 수도 함수일 수도 있다. 배열이 매개변수로 넘겨질 경우 배열에 있는 값만 결과 값에 포함된다. 한편 함수로 넘겨질 경..

    Item 7. 타입이 값들의 집합이라고 생각하기

    이번 아이템을 읽으면서 가장 충격적이였던 코드. 타입 PersonSpan은 Person과 Lifespan의 교집합이 아니라 합집합이다. 지금 생각해보면 당연할 수 있는데 처음에 보자마자 당연하게 교집합이라고 생각했다. interface Person { name: string; } interface Lifespan { birth: Date; death?: Date; } type PersonSpan = Person & Lifespan; const ps: PersonSpan = { name: 'Alan Turing', birth: new Date('1912/06/23'), death: new Date('1954/06/07'), }; // OK 왜냐하면 위에서 type연산자는 속성이 아닌 값의 집합에 적용되기 ..

    Item 4. 구조적 타이핑에 익숙해지기

    자바스크립트는 덕 타이핑 기반이다. 클래스도 구조적 타이핑 규칙을 따른다. 구조적 타이핑을 사용하면 유닛 테스트를 수월하게 할 수 있다. 덕 타이핑(Duck Typing)? 참고 구조적 타이핑(Structural Typing)? TypeScript의 타입 호환성은 구조적 서브 타이핑(subtyping)을 기반으로 합니다. 구조적 타이핑이란 오직 멤버만으로 타입을 관계시키는 방식입니다. TypeScript의 구조적 타입 시스템의 기본 규칙은 y가 최소한 x와 동일한 멤버를 가지고 있다면 x와 y는 호환된다는 것입니다. 예를 들어: interface Named { name: string; } let x: Named; // y의 추론된 타입은 { name: string; location: string; } 입..

    Item 3. 코드 생성과 타입이 관계없음을 이해하기

    타입스크립트 컴파일러는 두 가지의 역할을 수행한다. 구버전의 자바스크립트로 트랜스파일 타입 오류 체크 이 둘은 독립적으로 이루어지기 때문에 타입오류가 있는 코드도 컴파일이 가능하다. 만약 오류가 있을 경우 컴파일 하지 않으려면 noEmitOnError를 설정하거나 빌드 도구에 적용하면 된다. 런타임에는 타입체크가 불가능하다. 따라서 instanceof와 같이 런타임에 체크가 일어나는 경우 타입체크를 정상적으로 할 수 없다. 이러한 문제를 해결할 수 있는 방법은 1. 런타임에도 타입 정보를 체크할 수 있도록 코드 작성 function caculateArea(Shape){ if('height' in shape){ shape; //타입이 Rectangle return shape.width * shape.hei..