item 24
일관성 있는 네이밍
const test = [10,20]
const test2 =test
test2[0] = 1 // test = [1,10] 이 된다
별칭의 남발은 제어 흐름 분석을 어렵게 만듬
별칭은 타입스크립트가 타입을 좁히는 것을 방해함
function isPointInPolygon(polygon: Polygon, pt: Coordinate) {
const box = polygon.bbox; // 타입이 BoundingBox | undefined
if(polygon.bbox){
polygon.bbox // 타입이 BoundingBOx
box // 타입이 BoundingBox | undefined
}
}
비구조화 문법(동일한 키 값 사용하여 자동으로 할당)을 사용하여 일관된 이름 사용하는 것이 좋음
interface Coordinate{
x:number;
y:number;
}
interface BoundingBox{
x: [number, number];
y: [number, number];
}
interface Polygon{
bbox?: BoundingBox;
}
function isPointInPolygon(polygon: Polygon, pt:Coordinate){
const {bbox} = polygon; // 객체의 속성명과 동일한 변수명 사용하여 비구조화 문법 적용
if(bbox){
const {x,y} = bbox; // 객체의 속성명과 동일한 변수명 사용하여 비구조화 문법 적용
if(pt.x < x[0] || pt.x > x[1] ||
pt.y < y[0] || pt.y > y[1]}{
return false;
}
}
}
item 25
비동기 코드에는 콜백 대신 async 함수 사용하기
callback, promise, async 이야기
JS 비동기 처리 — Registro (tistory.com)
콜백 대신 왜 프로미스/async 이냐? =>
콜백보다 프로미스가 코드 작성, 타입 추론 쉬움
프로미스 대신 왜 async 이냐? =>
일반적으로 더 간결하고 직관적인 코드가 됨,
async는 항상 프로미스를 반환하도록 강제됨,
콜백이나 프로미스 사용시 실수로 비동기, 동기가 혼용하여 사용할 수 있음 (혼용하면 안됨), 반면 async는 항상 비동기 코드 작성하게 함
item 26
타입 추론을 할때 값만이 아니라 문맥을 고려한다
값과 문맥을 분리하면 에러발생할 수 있음
이 때 타입 선언 혹은 상수 단언(as const)를 활용해서 해결한다.
item 27
왠만하면 직접 구현하기보다는 함수형 기법과 라이브러리로 타입 흐름 유지하기
=> 가독성 높아지고, 명시적인 타입구문의 필요성을 줄일 수 있음
반응형
'TIL > TypeScript' 카테고리의 다른 글
[TypeScript] 이펙티브 타입스크립트 item 32~37 (0) | 2022.08.04 |
---|---|
[TypeScript] 이펙티브 타입스크립트 item 28~31 (0) | 2022.08.03 |
[TypeScript] 이펙티브 타입스크립트 item 21~23 (0) | 2022.07.28 |
[TypeScript]이펙티브 타입스크립트 Item 16~20 (0) | 2022.07.26 |
[TypeScript]이펙티브 타입스크립트 Item 11~15 (0) | 2022.07.24 |
댓글