분류 전체보기
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 9. 타입 단언보다는 타입 선언을 사용하기
// 타입 선언 const ABC : string = 'wrong'; // 타입 단언 const BCD = 'wrong' as string; 타입 선언은 할당되는 값이 해당 인터페이스 혹은 타입에 만족하는 지 검사한다. 하지만 타입단언은 강제로 지정하기 때문에 타입체크가 의미가 없다. 따라서 타입 선언보다는 타입 단언을 사용하는 것을 권장한다. 또한 잉여속성이 있을 때 타입단언문은 체크를 하지 않고, 타입단언은 잉여속성을 체크한다. 하지만 타입단언이 꼭 필요한 경우가 있다. DOM에 접근할 때인데, DOM에 접근할 때 예로 currentTarget의 타입을 지정할 때 그 타입은 엘리먼트에 없는 속성이라는 에러를 들 수 있다. 이때에는 TypeScript보다 사용자가 DOM에 대한 정보를 더 많이 알고 있..
Item 8. 타입 공간과 값 공간의 심벌 구분하기
타입은 ':' 부호 뒤에 온다. 값은 '='부호 뒤에 온다. 아래에서 interface Circle은 타입. cosnt Circle 은 값. 위 예제를 보면 instanceof 메소드 위에 오는 Circle은 값으로 받는다. instanceof 는 런타임에 작동하는데 그때에는 타입이 날아가기 때문이다. 따라서 아래에 stuff.diameter값에 오류가 난다. 한편 class나 enum은 타입과 값 두가지로 사용될 수 있다.
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연산자는 속성이 아닌 값의 집합에 적용되기 ..