[TS] 타입스크립트의 기초(2) - Class와 상속, 그리고 interface와 type의 차이점
·
Learning-Log/Computer Science
[TS] 타입스크립트의 기초(1) - type 키워드 및 Type에 대한 이해 TypeScript(TS)는 기본적으로 Javascript complier다. TS는 Strongly type 언어이고 JS에서 발생할 수 있는 오류를 미리 감지하고 경고해준다. 따라서 TS에서 오류가 없다면 JS에서도 오류가 없을 것이다. 이것은 xpectation.tistory.com TS에서는 Java나 C계열 언어에서의 Class와 거의 동일한 Class문법을 명시적으로 지원한다. 하지만 오해하지 말자. JS도 객체지향적 언어이다. class 키워드를 통한 문법 대신 prototype을 통해 객체지향성을 구현했을 뿐. TS로 Class 를 작성한뒤 컴파일 하면, ES6에서 도입된 JS의 Class 문법으로 코드가 변환되..
[TS] 타입스크립트의 기초(1) - type 키워드 및 Type에 대한 이해
·
Learning-Log/Computer Science
TypeScript(TS)는 기본적으로 Javascript complier다. TS는 Strongly type 언어이고 JS에서 발생할 수 있는 오류를 미리 감지하고 경고해준다. 따라서 TS에서 오류가 없다면 JS에서도 오류가 없을 것이다. 이것은 마치 모래를 촘촘한 거름망을 통해 먼저 걸러내는 것과 비슷하다. 촘촘한 거름망으로 걸러내고 나면 더 큰 거름망에서는 아무런 문제 없이 통과할 것. TS는 암묵적 Type과 명시적 Type을 모두 지원한다. Type은 변수를 선언할 때 명시적으로 지정해줘야한다. 그렇지 않으면, 변수 선언 후 처음으로 할당될 때를 기준으로 Type이 추론된다. 따라서 처음 할당된 변수의 Type과 다른 Type을 추후에 섞어서 쓰게 되면 에러가 뜬다. 변수의 Type은 기본적으로..
[TS] 타입스크립트 Generic에 대한 이해와 활용
·
Learning-Log/Computer Science
첫 번째 인자로 어떤 Array를 받아와서 두 번째 인자로 입력된 값을 Array의 가장 마지막에 추가하는 함수를 생각해보자. TS로 이 함수를 작성하려면 다음과 같이 작성 가능하다. type AddItem = (arr:(T|M)[], item : M) => (T|M)[] const addItem : AddItem = (arr, item) => { arr.push(item); return arr } 이 때, arr: (T | M)[ ] 부분이 이해가 안갈 수 있다. 은 item에서 정해져야할 것 같은데 arr에서 을 쓰면 뭔가 엉키지 않을까? 결론부터 말하면 엉키지 않는다. 위 코드를 작성한 뒤 TS의 Call Signature를 뜯어보자. 위 사진에서 볼 수 있듯 첫 번째 인자인 arr까지만 작성한다면..
[NPM] 패키지 설치시 더 이상 '--save' 플래그를 입력하지 않아도 되는 이유
·
Learning-Log/Computer Science
인터넷상에서 패키지 설치와 관련된 내용을 읽다보면 패키지 설치 코드에서 --save가 들어간 코드를 종종 접하게 된다. 하지만 이는 과거의 흔적이라고 볼 수 있다. 현재의 시점에서 '--save' 플래그는 더 이상 쓰지 않아도 된다. --save 의 뜻과 기능 --save 옵션을 통해 설치된 패키지는 package.json 파일의 dependencies 목록에 기록된다. 따라서 향후 npm install (혹은 npm i)를 입력하게 되면 해당 패키지가 설치된다. 그렇다면, --save를 입력하지 않으면 어떻게 될까? $ npm install 이런 경우 해당 패키지는 임시로 설치되고, package.json의 dependencies에는 추가되지 않기 때문에 언제든 node_modules 폴더를 지운 뒤,..
·
Thinking-Log/인간에 관한 생각
1. 갈증은 소중하다. 목 마른자는 스스로 우물을 판다. 2. 갈증은 중요하다. 목 마르지 않은 자에게는 물을 줄 가치가 없다. 물고문은 서로의 감정만 상하게 만든다. 3. 갈증은 위험하다. 찬 물, 더운 물 가리지 않게 만든다. 일찍이 맹자는 목마름의 위험을 경고한 바 있다. 맹자가 말했다. "굶주린 자는 무엇을 먹어도 맛있게 먹고, 목마른 자는 무엇을 마셔도 달게 마신다. 그러나 이는 맛을 제대로 느끼지 못하는 것이다. 굶주림과 목마름이 미각의 본성을 해쳤기 때문이다. 어찌 입과 배만이 굶주림과 갈증으로 인해 해를 입겠는가? 사람의 마음도 굶주림과 갈증으로 해를 입는다."
[JS] 자바스크립트의 배열(Array)은 배열이 아니다.
·
Learning-Log/Computer Science
arr['a'] = 1; 위 코드가 먹힌다는 사실이 제목을 설명해준다. 자바스크립트의 배열은 엄밀히 말해서 배열이 아니다. 바로 객체이다. 아주아주 엄밀히 말하자면, 'JS의 배열은 희소 배열이기 때문에, 일반적으로 의미하는 밀집 배열이 아니다' 라고 말할 수 있겠다. 밀집 배열(협의의 배열)이란, 메모리 공간이 동일한 한 가지 자료형으로만 구성되어 자료가 서로 연속하여 나열된 자료구조이다. 희소 배열(광의의 배열)이란, 하나 이상의 자료형을 허락하는 배열이여서 한 자료가 차지하는 메모리 공간이 불규칙할 수 있고, 그 때문에 서로 연속적으로 나열되어 있지 않을 수도 있는 자료구조이다. 여담이지만, JS 배열은 희소 배열이기 때문에 배열 요소를 인덱스로 접근하려는 경우 밀집 배열인 다른 언어에 비해 상대적..
[VSCode] remote.wsl:connection Method 를 알아보자
·
Learning-Log/Computer Science
VSCode 설정 중에는 remote.wsl:connection Method 가 있다. 구체적으로는, WSL1 에 localhost, wslExeProxy 의 2가지 방식 WSL2 에 localhost , wsl2VMAddress, wslExeProxy 의 3가지 방식이 있다. 기존 WSL1에서는 localhost 방식을, WSL2에서는 wsl2VMAddress 방식을 기본값으로 하고 있었다. 즉, WSL2에서는 IP를 통해 로컬환경 외부에서도 WSL2로 접근이 가능했다. 하지만 WSL2가 재시작할때마다 IP값은 매번 달라지는데(유동IP여서 그때 그때 ip를 받아온다고 이해하면 편하다) 이 때문에 시스템이 절전모드에서 깨어나거나 네트워크가 재설정되거나 하는 경우 VSCode의 원격접속이 계속 끊어지는 현..