1. 네이밍 생각하기 프로그래밍 작성자가 아니더라도 어느정도 이해할 수 있는 네이밍이 필요하다. 너무 복잡하지도, 너무 간결하지도 않게 해야함. 그래서 제일 어렵다. 간단한 토이프로젝트, 간단한 소스코드를 작성하더라도 신경쓰는 버릇을 들여야 실제 프로젝트에서도 네이밍을 잘 해낼 수 있다. 2. 효율성 생각하기 어떤 역할을 하기 위해 for문을 도는 배열이 있고, 그 생산물이 또 for문을 돌아야 하는 경우가 있다. 위 경우는 두 기능을 합치면 for문을 한번만 돌아도 된다. 이 기능적인 것을 가능케 하는 것이 함수고, 그 함수를 잘 짜기 위해서는 기능에 대해 효율성을 생각해야 한다. 2-1. 같은 기능 묶기 어떤 값을 생산함에 있어 로직은 같지만 산출물이 미묘하게 다른 경우, 특정 부분을 파라미터로 만들..
이 글은 사실 원숭이의 유레카 입니다. 아직 타입스크립트를 잘 모르지만 배워야하는 이유를 심각하게 체감했고, 그 이유를 공유하고자 제 생각을 글로 적어 남겨봅니다. 시작하겠읍니다. 타입스크립트는 뭘까요? 타입스크립트는 자바스크립트의 정적 타입 체커입니다. 즉, 자바스크립트의 정적 검사(프로그램을 실행시키지 않으면서 코드의 오류를 검사) 검사자의 역할을 합니다. 자바스크립트가 워낙에 약타입에 자유분방한 언어라 배열에 문자열을 더해도 오케이, 문자열에 숫자를 더해도 오케이를 해버려서 자바스크립트로 복잡한 프로그램을 짠다면 후에 유지보수가 어려워질 수 있기에, 프로그래밍 초기 단계서부터 에러가 날 상황을 최대한 방지하고자 타입스크립트를 쓴다고 익히 알고 있습니다. 그러한 이유로 저는 결국에 해결책은 자바스크립..
시니어님께서 보내주신 링크인데 영어로 되어있어 번역해가며 공부해보고자 합니다. https://proandroiddev.com/the-real-repository-pattern-in-android-efba8662b754 The “Real” Repository Pattern in Android Over the years I’ve seen many implementations of the repository pattern, yet I think most of them are wrong and not beneficial. proandroiddev.com 몇 년간 필자는 리포지토리 패턴을 많이 보아왔지만, 많은 사람들이 이 패턴을 잘못 구현하거나, 별로 이익이 되지 않게 구현하고 있던걸 확인할 수 있었습니다. 리..
더블 링크드 리스트 구현 목표 더블 링크드 리스트 설계하기 싱글 링크드 리스트와 더블 링크드 리스트 비교하기 더블 링크드 리스트의 기본적인 요소 구현하기 싱글 링크드 리스트와의 비교 더블 링크드 리스트와 싱글 링크드 리스트의 차이는 prev 포인터의 추가 유무입니다. 더블 링크드 리스트는 prev라는 포인터가 하나 더 추가됩니다. 그 외엔 같습니다. prev의 존재로 node를 탐색하는데 있어 싱글 링크드 리스트보다 절반의 시간이 걸립니다. 하지만 추가적인 메모리가 들게 됩니다. (메모리 사용량이 싱글 링크드 리스트보다 많습니다.) 시간복잡도(BigO) 삽입(Insertion) - O(1) 삭제(Removal) - O(1) 검색(Searching) - O(N) 접근(Access) - O(N) 기술적으로 ..
https://navermaps.github.io/maps.js.ncp/docs/tutorial-3-Using-TypeScript.html NAVER Maps API v3 NAVER Maps API v3로 여러분의 지도를 만들어 보세요. 유용한 기술문서와 다양한 예제 코드를 제공합니다. navermaps.github.io 네이버 MAPS 타입스크립트 공식 홈페이지 설명이다. 세상 이렇게 대충 해놓을 수가 없다. 적용방법 1. navermaps를 설치해준다. 2. compilerOptions에 적용한다. { "compilerOptions": { // ... "types": ["navermaps"] // ... } }
타입 단언 : 내가 너보다 많이 알아! 타입단언은 타입스크립트보다 개발자 본인이 더 타입을 명확히 알고 있으며 타입스크립트가 타입 정의를 잘 못하고 있을 때, 개발자가 타입을 주입시켜 주는 행위를 말한다. 위 상황에서 개발자인 우리는 index.html에 input과 button 엘리먼트가 각각 존재하고, 위 코드와 알맞는 id를 가지고 있는 것을 알 수 있다. 하지만 타입스크립트는 오류를 내뿜는다. 이유는 타입스크립트가 btn과 input이 HTMLElement라는 것을 document.getElementById를 통해서 알고는 있지만 HTMLElement에는 value라는 프로퍼티가 없기 때문에 오류를 내뿜는 것이다. 하지만 input의 타입은 HTMLElement가 아니다. 그렇다면 어떤 타입인지 ..
btn이 버튼이라고 위에 선언했는데 왜 아래에서 이벤트리스너를 붙일 때 에러 메세지가 나는 걸까? 이유는 btn이 HTMLElement일 수도 있지만 null이 될 수도 있어서이다. null에는 이벤트를 붙여줄 수 없기 때문에 타입스크립트에서는 오류를 내뿜는다. 이를 막아줄 수 있는 방법이 2가지 정도 존재하는데 첫번째는 이것은 null이 무조건 아님! 하면서 ts에서 별도의 선언을 해주는 것이다. 이를 non-null 연산자라고 하며 !와 관련이 있다. 위의 사진처럼 첫번째 코드의 맨 뒷줄에 !를 넣어주면 const btn은 무조건 null이 아님! 이라고 선언해주는 것과 같게 된다. 따라서 btn에 이벤트리스너를 붙여줄 때 에러가 나지 않게 된다. 이런 강제적인 방법말고, 옵셔널 체이닝을 이용하는 방..
https://www.typescriptlang.org/tsconfig#lib TSConfig Reference - Docs on every TSConfig option From allowJs to useDefineForClassFields the TSConfig reference includes information about all of the active compiler flags setting up a TypeScript project. www.typescriptlang.org 먼저 공식문서의 tsconfig에 대한 lib의 설명을 보자. 타입스크립트는 빌트인 JS API (Math 메서드 세트 같은) 에 대한 타입 정의를 디폴트 세트로 가지고 있습니다. 그리고 브라우저 환경에 관련된 타입(doc..
/* 까지만 쳤을 때 자동완성 기능으로 /** */ 이 나오면 엔터쳐서 들어감. 자동적으로 함수에 있는 파라미터와 리턴값이 설정됨. 그럼 위와 같이 함수의 설명을 볼 수 있게됨. 이 기능들은 기본기능이라 별도로 무언가를 설치할 필요가 없음. 다만 따로 문서화를 하려면 라이브러리를 설치해야하는 것으로 알고있음.