본문 바로가기

# Lang/NodeTS

(5)
# Lang/NodeTS 자바스크립트 및 NodeJS 메모리 누수 피하기 (+ 메모리 구조, 가비지 컬렉터) 개요 어느 프로그래밍 언어든지 마찬가지겠지만 해당 언어의 내부 메모리 구조와 가비지 컬렉션 전략을 이해하지 못하면 해당 언어가 낼 수 있는 최대의 성능을 올바르게 이끌어낼 수 없습니다. 유틸리티 정도의 작은 프로그램이라면 괜찮겠지만, 큰 규모의 프로그램을 작성해야 한다면 이야기는 달라지겠죠. 해당 포스트에서는 자바스크립트의 메모리 구조와 가비지 컬렉션에 대해 설명하고, 올바르지 않은 코딩 패턴에 대해 설명합니다. 선행 지식 해당 포스팅을 이해하기 위해 필요한 지식들을 설명합니다. 참조형 변수 C++과 다르게 자바스크립트는 변수의 타입이 참조형인지 값인지 코드에서 명확하게 보이지 않으므로 처음에는 둘의 구분이 어려울 수 있지만, 실제로는 매우 쉽습니다. 다음 2가지만 기억하세요. 배열과 객체는 레퍼런스(주..

2020. 9. 30. 14:31

# Lang/NodeTS alias를 사용하여 import 구문을 깨끗하게 만들자! Alias 어떤 경로에 별명(Alias)을 붙이고 모듈을 불러올 때, 이 별명을 활용하는 것을 Alias imports라고 합니다. 또한 별명을 활용하면 상대경로 방식이 모두 제거되므로, Absolute imports로도 불립니다. 먼저, 아래의 코드를 리팩토링하는 것부터 시작해봅시다. 최종적으로는 한 줄로 축약되고, 이 과정에서 모든 ../../../는 제거될 것입니다. import { IColumnVisibility } from "../../../interfaces/IColumnVisibility"; import { ILicense } from "../../../interfaces/ILicense"; import { ISoftware } from "../../../interfaces/ISoftware..

2020. 2. 13. 17:26

# Lang/NodeTS barrel를 사용하여 import 구문을 깨끗하게 만들자! Barrel 배럴이란 개념을 사용하면 import 구문을 축약함으로써, 코드를 더 깨끗하게 유지보수할 수 있습니다. 이것을 요약하자면 여러 모듈을 묶어서 다시 export하는 모듈로 정의할 수 있는데, 아래 코드처럼 하지말고, ./impl/에 {a, b, c}를 export하는 배럴을 두면 한줄로 축약할 수 있습니다. // ./src/app.ts import { a } from "./impl/a"; import { b } from "./impl/b"; import { c } from "./impl/c"; console.log(a, b, c); 아래처럼요. // ./src/app.ts import { a, b, c } from "./impl/barrel"; console.log(a, b, c); 물론 아래..

2020. 2. 13. 16:41

# Lang/NodeTS 타입스크립트 런타임 타입 가드 타입 체크는 컴파일에 이루어진다. 타입스크립트의 타입 체크는 Only 컴파일 시간에 이루어집니다. 컴파일 시간에는 비교적 엄격하게 타입체크를 하는편이지만, 그 외에는 타입체크가 거의 없다시피 하기때문에, 런타임시에는 진짜 그 타입이 맞는지 체크하는 것이 어렵습니다. 이 와중에 any가 포함되면 믿었던 컴파일 타입체크도 무용지물이 되는데, 아래 코드가 오류없이 컴파일되는것만 봐도 알 수 있습니다. interface Args { n: number; s: string; } let invaildArgs: any = { num: 3, str: "str" }; let fakeArgs: Args = invaildArgs; console.log(fakeArgs.n, fakeArgs.s); 위의 코드에서 fakeArgs..

2019. 12. 17. 20:27

# Lang/NodeTS VSCode TypeScript 프로젝트 생성하기 타입의 세계에 오신것을 환영합니다! 타입스크립트는 이른바 타입이 존재하는 자바스크립트라고 불리며, 자바스크립트의 장점이자 단점이였던 지나치게 지나친 유연성을 엄격하게 강제하기 위해 만들어졌습니다. 타입검사가 없으니 잘못된 인자를 넘겨주는 경우가 부지기수였고, 다른 사람이 작성한 코드라면 십중팔구죠. function addTwoNumber(x, y){ return x + y; } const num = 123 ; const str = '456'; const ans = addTwoNumber(num, str); // '123456' 동적타입에 고통받으신 여러분들을 위해, 안전한 타입스크립트의 세계로 안내해드리겠습니다. 준비물 챙기기 타입스크립트의 세계를 경험하기 위해서는, 먼저 준비물부터 챙겨야 합니다. 먼저..

2019. 12. 5. 02:03