반응형

개발 28

[이펙티브 타입스크립트+16] number 인덱스 시그니처보다는 Array, 튜플, ArrayLike를 사용하기

2장 타입스크립트의 타입 시스템 아이템 16 | number 인덱스 시그니처보다는 Array, 튜플, ArrayLike를 사용하기 3줄 요약 1. 자바스크립트에서는 object의 key 타입은 string 타입 혹은 symbol 타입이다. 다른 타입은 형변환된다. 2. 타입스크립트에서는 자바스크립트와의 일관성을 위해 number 타입의 key 타입을 허용한다. 3. number 인덱스 시그니처보다는 Array, 튜플, ArrayLike를 사용하자. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 자바스크립트의 배열은 object 타입입니다. 그리고 자바스크립트에서 object는 키와 값의 쌍으로 구성되어 있습니다. 자바스크립트 엔진에서는 object의 키는 string 타입 혹은 ..

[이펙티브 타입스크립트+15] 동적 데이터에 인덱스 시그니처 사용하기

2장 타입스크립트의 타입 시스템 아이템 15 | 동적 데이터에 인덱스 시그니처 사용하기 3줄 요약 1. 가능하다면 인덱스 시그니처 사용을 피하자. 2. keys를 알고 있다면 Record 타입 혹은 매핑된 타입 사용을 고려해보자. 3. 외부에서 받아오는 것과 같이 keys가 변동될 수 있다면 인덱스 시그니처 사용을 고려해보자. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 이번 아이템의 제목은 동적 데이터에 인덱스 시그니처 사용하기이지만 주제는 동적 데이터가 아니라면 되도록 인덱스 시그니처 사용하지 말자에 가깝습니다. 다들 알고 계시지만 인덱스 시그니처는 아래와 같이 생겼습니다. // 인덱스 시그니처 타입 type IndexSignatureType = { [property: st..

[이펙티브 타입스크립트+14] 타입 연산과 제너릭 사용으로 반복 줄이기

2장 타입스크립트의 타입 시스템 아이템 14 | 타입 연산과 제너릭 사용으로 반복 줄이기 3줄 요약 1. 타입의 불필요한 중복을 없애고 재활용하는 것이 중요하다. (DRY 원칙) 2. 타입연산자들 확인하고 많이 써보는 연습을 하자. 3. 타입스크립트 공식 홈페이지에 나오는 유틸리티 타입들을 직접 만들어보는 연습을 하자. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 이번 아이템에서의 주제는 타입의 재활용입니다. 타입스크립트에서 코드 재활용만큼 중요한 것이 타입 재활용입니다. 가장 간단한 방법은 타입 선언을 통해 중복을 제거하는 방법입니다. 또 간단한 방법은 기존의 타입에서 타입 연산자를 활용하여 타입을 확장시키는 것입니다. 불필요한 타입의 중복을 제거하기 위해서 타입을 확장하였습..

[이펙티브 타입스크립트+13] 타입과 인터페이스의 차이점 알기

2장 타입스크립트의 타입 시스템 아이템 13 | 타입과 인터페이스의 차이점 알기 3줄 요약 1. 대부분의 경우에는 타입과 인터페이스는 차이점이 없다. 2. 복잡한 타입을 다룰 때는 type을 사용하는 것이 좋다. 3. 인터페이스의 선언 병합을 통해 속성을 확장시킬 수 있다. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 타입스크립트에서 타입을 정의하는 방법은 두 가지가 있습니다. 첫 번째는 type을 이용하는 것이고, 두 번째는 interface를 이용하는 것입니다. 타입스크립트를 처음 공부해서 사용할 때 언제 타입을 사용해야 하는지 언제 인터페이스를 써야 하는지 몰라서 고민에 빠질 때가 있습니다. 대다수의 경우에는 타입을 사용해도 되고, 인터페이스를 사용해도 됩니다. 이번 아이..

[이펙티브 타입스크립트+12] 함수 표현식에 타입 적용하기

2장 타입스크립트의 타입 시스템 아이템 12 | 함수 표현식에 타입 적용하기 3줄 요약 1. 타입스크립트에서는 타입 재활용이라는 관점에서 함수 선언문보다 함수 표현식이 장점을 가진다. 2. 함수 선언문과 함수 표현식의 차이점을 이해하라. (함수 호이스팅 등) 3. ... 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 자바스크립트에서 함수를 만들 때에는 크게 두 가지 방식이 있습니다. 함수 선언문과 함수 표현식입니다. 타입스크립트에서는 함수 표현식을 사용하는 것을 권장합니다. 함수 표현식을 사용하면 함수의 매개변수와 반환값를 한번에 함수 타입으로 선언할 수 있기 때문입니다. 반면에, 함수 선언문을 사용하면 함수의 매개변수와 반환값의 타입을 따로 선언해야합니다. 반면에 함수 표현식을..

[이펙티브 타입스크립트+11] 잉여 속성 체크의 한계 인지하기

2장 타입스크립트의 타입 시스템 아이템 11 | 잉여 속성 체크의 한계 인지하기 3줄 요약 1. 잉여 속성 체크는 타입에 선언된 속성 외에 속성이 있는지 체크한다. 2. 객체 리터럴에서만 잉여 속성 체크가 동작한다. 그래서 엄격한 객체 리터럴 체크라고도 불린다. 3. 일반적인 구조적 할당 가능성 체크와는 역할이 다르다. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 잉여 속성 체크는 아래와 같습니다. 변수에 타입을 선언함과 동시에 오브젝트 리터럴로 만들게 되면 잉여 속성이 체크됩니다. 반면 아래와 같은 경우에는 잉여 속성이 체크되지 않습니다. 정상적으로 hoon 변수에 hyun 변수가 할당되었고, 이 과정에서 잉여 속성 체크는 진행되지 않았습니다. 구조적 타이핑이라는 관점에서 봤..

[이펙티브 타입스크립트+10] 객체 래퍼 타입 피하기

2장 타입스크립트의 타입 시스템 아이템 10 | 객체 래퍼 타입 피하기 3줄 요약 1. 타입스크립트에서는 변수를 선언할 때, 객체 래퍼 타입으로 선언하지 마라. 2. 타입스크립트에서는 자바스크립트의 동작을 모델링한다. 3. 객체 래퍼 타입으로 선언하면 자바스크립트의 변수와 동작이 맞지 않을 수 있다. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 객체 래퍼 타입이란 Number, String, Boolean 등과 같은 타입입니다. 대문자로 시작합니다. 반면에, 원시 타입이란 number, string, boolean 등과 같은 타입입니다. 대문자로 시작하지 않고 소문자로 시작합니다. 자바스크립트에는 6가지 원시 데이터 타입이 있습니다. undefined, null, number,..

[이펙티브 타입스크립트+9] 타입 단언보다는 타입 선언을 사용

2장 타입스크립트의 타입 시스템 아이템 9 | 타입 단언보다는 타입 선언을 사용하기 3줄 요약 1. 타입 단언보다는 타입 선언을 사용하자. 2. 컴파일러보다 더 타입을 확신할 수 있을 때는 타입 단언을 사용해도 된다. 3. 함수 시그니처를 잘 살펴보고 제너릭을 통해 리턴 타입을 정할 수 있다면 타입 단언보다 해당 방법을 더 우선으로 고려하자. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 타입 선언과 타입 단언의 차이는 아래와 같습니다. 변수 kim과 변수 lee는 모두 Person 타입입니다. 그러나 타입을 부여하는 방식이 서로 다릅니다. 변수 kim에서는 타입 선언 방식이 사용되었고, 변수 lee에서는 타입 단언이 사용되었습니다. 이번 아이템에서 이야기하는 것은 타입 단언 방..

[이펙티브 타입스크립트+8] 타입 공간과 값 공간의 심벌 구분

2장 타입스크립트의 타입 시스템 아이템 8 | 타입 공간과 값 공간의 심벌 구분하기 3줄 요약 1. 타입스크립트에서는 타입의 공간과 값의 공간이 분리되어있다. 2. 타입스크립트 코드를 읽을 때 타입인지 값인지 구분하는 방법을 터득해야 한다. 3. 클래스(생성자 함수)의 타입은 typeof 클래스이고, 인스턴스의 타입은 클래스이다. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 타입스크립트에서는 값의 공간(context)와 타입의 공간(context)가 다릅니다. 따라서, 똑같은 이름의 식별자(책에서는 심볼)가 각각의 공간에서 각자 존재할 수 있습니다. (그렇다고 해서 이렇게 똑같은 이름으로 쓰는 것은 권장하지 않습니다. 본인뿐만 아니라 같이 개발하는 동료까지 헷갈리게 할 수 있습..

[이펙티브 타입스크립트+7] 타입이 값들의 집합이라고 생각

2장 타입스크립트의 타입 시스템 아이템 7 | 타입이 값들의 집합이라고 생각하기 3줄 요약 1. 값들의 집합을 타입이라고 한다. 2. unknown과 any는 본질적으로 다른 타입이다. 3. 부분 집합이다 / 할당 가능하다 / 상속받았다는 동일한 의미를 가지고 있다. 참고) 이펙티브 타입스크립트는 타입스크립트의 기본 그 이상을 다룹니다. 자바스크립트(ES6)에서 타입이란 데이터 타입을 이야기하며 총 7개입니다. 원시 타입인 number, string, boolean, undefiend, null, symbol와 객체 타입으로 구성되어 있습니다. 타입스크립트에서는 타입을 값들의 집합이라고 생각해야 합니다. 그리고 그 타입은 프로그래머가 정의할 수 있으며 그 수는 무한히 많습니다. 그리고 이 타입은 타입 공..

반응형