타입스크립트4 [타입스크립트] 타입 가드로 catch문 error 타입 정하기 Intro 회원가입이나 로그인을 할 때 에러가 발생하면 서버가 에러 메시지를 리턴해주는 경우가 있다. 그런데, error.message를 보려고 하니 error에는 message가 없다며 타입 에러가 발생한다. 에러 타입을 어떻게 정해주면 좋을까? try ~ catch문 에러 타입 정하기 문제 error의 타입은 unknown이기 때문에 바로 console.log(error.message)를 하면 타입 에러가 발생한다. const getUsers = (a: string | number) => { try { // actions.. } catch (error) { console.log(error.message) // Error! } } 해결 instanceof Error로 타입을 좁혀주면 타입 에러가 사라진.. 2023. 1. 13. [타입스크립트] 사용하는 이유 1. 안전함 런타임 오류를 방지할 수 있다. 런타임 vs 컴파일 - 런타임 : 사용자에 의해 실행되고 동작 되어질 때 - 컴파일 : 소스코드 -> 기계어 코드로 변환하는 과정 동적 타입 언어 - 런타임에 실제 코드의 값이 평가될 시점에서야 변수에 들어올 값과 타입을 알 수 있다. - ex. JavaScript function multiply(num1, num2) { let result = num1 * num2; return result; } 정적 타입 언어 - 컴파일 타임에 변수의 타입을 결정한다. - 실제 코드를 실행해보지 않더라도 변수의 값이 무슨 타입인지 미리 알 수 있다. - ex. Java // args의 타입을 미리 결정해야 한다 public class Main { public static v.. 2023. 1. 13. [타입스크립트] 제네릭 - 2 (타입 제한) 제네릭 타입 제한 1. 배열 함수 호출 시 타입을 명시하지 않을 경우, 아래처럼 에러가 날 수 있음 function logTextLength(text: T): T { console.log(text.length); // error! T에 length 프로퍼티가 없다 return text; } logTextLength('hi'); T → T[] 배열로 바꾸면 length 프로퍼티를 사용할 수 있음 function logTextLength(text: T[]): T[] { console.log(text.length); return text; } logTextLength(['hi', 'abc']); 2. 정의된 타입 extends를 이용해 LengthType을 상속하면 length 프로퍼티를 기본으로 갖고, 더 .. 2023. 1. 12. [타입스크립트] 제네릭 - 1 (개념과 예제) 애니스크립트 대신 제네릭을 사용해보자 공통으로 사용할 커스텀 훅을 만들 때, 어떤 타입의 파라미터가 들어올 지 모르면 value : any 로 하곤 했었다 (No! 지양해야 됨) 이 때 팀원 분께서 해주신 코드 리뷰! " any 대신 사용하는 곳에 따라서 type을 넣어줄 수 있는 generic을 사용해주세요 " 이름만 들어보고 어떤 역할을 하는지 몰랐었는데 타입스크립트 강의를 들어보니 정말 유용한 개념이라 글로 남기게 되었다. 제네릭이란? 개념 단순하게 설명하면 '인자로 타입을 받는 함수' // 인자로 들어온 것을 타입으로 삼는다 : "hi" => string const log = { console.log(value); return value; }; const res = log("hi"); extend.. 2023. 1. 12. 이전 1 다음