본문 바로가기
728x90
반응형

Language/TypeScript6

[TS] TypeScript에서 Enum을 쓰면 안된다! (이유, 방안) 우리 회사는 코드리뷰를 하지 않지만 동기가 내 코드를 보고 피드백을 줘서 코드를 고치다가 다시 원점을 돌아간 나의 이야기를 담았다. 사건의 전말 moogose에서 사용하는 Model과 type 체크를 위한 Interface에서 공통으로 사용되는 Object들이 있었다. // Model - mogoose에서 사용하는 파일 interface OS { IOS: 'IOS'; Anderoid: 'Anderoid'; } // Interface - type 체크를 위해 사용되는 파일 const OS = { IOS: 'IOS', Anderoid: 'Anderoid', }; export type OS = typeof OS[keyof typeof OS]; 위 코드와 같이 확실히 중복되어서 사용하고 있었다. 한 쪽에만 ex.. 2022. 10. 13.
TypeScript + NodeJS(express) + MongoDB 조합으로 API 서버 만들때 주의할 점 들어서며 NodeJS를 쓰는 개발자들은 처음엔 유연한 JavaScript로 시작했다가 어느순간 TypeScript으로 넘어가게 되고 고마움을 느낍니다. 저도 개발을 하면 할수록 TypeScript의 필요성을 느끼고 있고 잘 이용할려고 합니다. 하지만 TypeScript로 API 서버를 만들면서 의아했던 부분들이 있었습니다. 의문 1. 상황 req.body로 클라이언트로부터 서버로 데이터를 전달 받았을 때 type 오류가 발생하지 않습니다. 제가 생각했을 때 아래 두가지 상황에서 분명 오류가 발생하고 데이터가 저장되지 않아야 하는데 그렇지 않았습니다. 2-1. Interface에 정의한 요소가 아님에도 오류가 발생하지 않는다. // interface.ts export interface UserInterfa.. 2022. 9. 28.
TypeScript에서 <T>란 무엇일까? - Generic Type 들어서며 TypeScript는 단순하게 JavaScript에서 Type을 추가해준 언어이다. 하지만 TypeScript를 쓰면서 라는 새로운 아이를 만나게 된다. 처음에는 를 만나거나 쓸 일이 없어 단순하게 넘겼지만 TypeScript로 개발을 하면서 자연스럽게 를 만나게 되었다. 그럼 가 무엇이고 왜 TypeScript에서는 이걸 쓰는지에 대해서 이야기해보도록 하자. 쓰는 이유 JavaScript는 다른 언어들과 달리 type을 입력하지 않기 때문에 자유롭다. 그만큼 위험부담이 높기 때문에 JavaScript 개발자들은 필수적으로 TypeScript를 이용해서 type에 따른 위험 요소를 줄이고자 한다. TypeScript는 함수나 클라스를 사용하기 위해서는 미리 Type을 지정해줘야 한다. 그렇지만 .. 2022. 9. 26.
[TypeScript] object vs. Object 차이점 간단하게 변수에 객체를 넣고 싶었다. 그런데 객체에 object와 Object가 있다는 것을 알았다. 문제점 text라는 변수에 object[]라는 타입을 지정했다. 일부러 string을 넣어보니 바로 타입 에러가 표시되어 잘못 지정해줬다는 것을 개발자에게 알려준다. 이럴 경우 코드 작성시 생길 수 있는 에러 확률을 현저히 낮춰준다. 하지만 Object[]를 주면 오류가 뜨지 않는다. 이럴경우 매우 당황스러운 순간이다. 어째서 object는 잡아주고 Object는 잡아주지 않는 것일까? 차이점 object의 경우 원시형이 아닌 모든 값들을 받을 수 있다. 즉, string, number, boolean, symbol, null, undefined가 들어오면 type 에러를 발생한다는 것이다. 하지만 원시.. 2022. 8. 29.
[TypeScript] Property 'user' does not exist on type 'Session & Partial<SessionData>'. ts(2339) 해결 세션을 이용해서 로그인을 준비하던 중 에러가 발생했습니다. Property 'user' does not exist on type 'Sesson & Partial'. ts(2339) 아무리 구글링 해봐도 뾰족한 수가 보이지 않아 낙담하던 그때..! https://icecokel.tistory.com/17 TypeScript, Express-session 을 이용한 로그인 처리 (2) 안녕하세요. 오늘은 저번 포스팅에 이어서 TypeScript 환경에서의 Express-session 로그인 처리 포스팅을 진행하겠습니다. 작업환경 express-session, SessionData 수정 로그인처리 1. 작업환경 운영체제 Windows.. icecokel.tistory.com 이 분의 게시물을 보고 해결 😇 이.. 2022. 7. 1.
[TypeScript] Optional Chaining - 옵셔널 체이닝 옵셔널 체이닝이란 null이나 nudefind인 값이 반환되면, 즉시 중단하고 undefined를 반환하는 문법입니다. 아마도 객체의 내부를 사용할 때 Object is possibly 'null'.ts(2531) 이라는 오류를 접하게 되었습니다. null 값 처리 중 가장 나은 방법이 옵셔널 체이닝이라는 것을 알게 되었어요. 처음 보는 문법이라 정리해보았습니다! const plusRoute = groupRouter?.route 옵셔널 체이닝은 객체 뒤에 ?를 사용하면 됩니다. 그렇다면 ?는 무슨 역할을 해주는 걸까요? 처음엔 선택적 프로퍼티라고 생각했어요. 하지만..! 선택적 프로퍼티랑 아예 다르더라고요. (당연함..이름도 다름 ㅎ..) const plusRoute = groupRouter ? grou.. 2022. 6. 7.
728x90
반응형