본문 바로가기

전체 글52

day5_EffectiveTypescript 스터디 2022년 11월 30일 글입니다. Item18. 매핑된 타입을 사용하여 값을 동기화하기 요약 1: 매핑된 타입을 사용해서 관련된 값과 타입을 동기화 하도록 한다. 값을 그대로 때려박는것 보다, 매핑된 타입을 사용하면 함수가 변경되었을 때 참조하고 있던 다른코드에서 알아서 오류를 발생시키기 때문에 유지보수에 용이하다. 프로젝트를 유지보수 할 때 우리는 함수를 변경해야 할 때가 많다. 이럴 때 변경된 값을 바로바로 찾을 수 있도록 매핑된 타입을 이용하여 값을 동기화 하자. 그러면 함수가 변경되었을 경우 타입체커가 알아서 오류를 발생시켜줘서 유지보수에 용이하다. 예를 들어 산점도를 그리는 인터페이스가 있고 필요할 때만 데이터를 그리기 위해 핸드러를 정의했다고 하자. interface ScatterProps .. 2023. 6. 16.
Day4_EffectiveTypescript 스터디 2022년 11월 29일 글입니다. Item16. number 인덱스 시그니처 보다는 Array, 튜플, ArrayLike 를 사용하기 요약 1. 배열은 객체이므로 키는 숫자가 아니라 문자열이다. 인덱스 시그니처로 사용된 number 타입은 버그를 잡기위한 순수 타입스크립트 코드다. 요약 2: 인덱스 시그니처에 number을 쓰기보다는 Array나 튜플, ArrayLike 타입을 이용하는게 좋다. 자바스크립트는 혼란스러운 언어다. 그 예로 자바스크립트에서는 객체의 키로 문자열만 사용할 수 있다. 만약 숫자를 사용하면 자바스크립트 런타임이 문자열로 변환한다. 하지만 배열은 객체인데 숫자인덱스를 사용하는게 당연하다. 하지만 object.keys(x)를 하면 문자열로 출력된다. => 타입스크립트는 이러한 혼란.. 2023. 6. 16.
day3_Effective TypeScript 스터디 2022년 11월 29일 글입니다. Item11. 잉여 속성 체크의 한계 인지하기 잉여속성체크 : 변수에 객체 리터럴을 할당할때, 해당 타입의 속성이 있는지, 있어선 안되는 ' 그외의 속성이 없는지' 체크하는 행위 구조적 타입 시스템에서 발생할 수 있는 중요한 종류의 오류를 잡아줌 그러나 잉여 속성 체크는 조건에 따라 동작하지 않음. 오로지 객체 리터럴을 할당할 때 만 발동 * 잉여 속성 체크와 할당 가능 검사(구조적 타이핑)은 별도의 과정임 구조적 타입체커로만 사용했을 땐, 구조적 타이핑에 부합한다는 이유로 이상한 변수를 할당할 수도 있다. 그런 걸 막아주는게 잉여속성 체크, 타입에 정확하게 들어맞는지 검사해준다. 잉여 속성 체크의 한계 객체 리터럴이 아닌 변수 할당 같은 경우엔 적용 안됨 as T 같.. 2023. 6. 16.