타입스크립트 기본 설치와 초기 세팅

Posted by 나에요임마
2023. 5. 17. 21:46 Program/TypeScript

일반적인 타입스크립트 환경에서 작업하기 위한 초기 세팅에 대해 정리해보고자 한다. (리액트 X)

타입스크립트 설치와 세팅

1. node, npm 설치되어 있는지 확인한다.

node -v
npm -v

 

2. 프로젝트 폴더에서 npm init으로 package.json을 생성한다.

npm init

 

3. 타입스크립트 설치

이 패키지는 ts를 js로 변경하는 컴파일러를 제공한다.

npm install typescript

 

4. ts-node 설치

ts 파일을 js로 컴파일해서 node에서 실행해준다.
즉, 타입스크립트를 바로 실행할 수 있게 해주는 것이다.

npm install -D ts-node

 

5. 아래 명령어를 통해 tsconfig.json 파일을 생성하여 컴파일 세부 옵션을 설정해준다.

npx tsc --init

📎 컴파일러 옵션
📎 타입스크립트 설정 파일 (tsconfig.json)

(tsconfig.json 예시)

{
 "compilerOptions": {
   "target": "es5",
   "lib": [
     "dom",
     "dom.iterable",
     "esnext"
   ],
   "allowJs": true,
   "skipLibCheck": true,
   "allowSyntheticDefaultImports": true,
   "strict": true,
   "forceConsistentCasingInFileNames": true,
   "noFallthroughCasesInSwitch": true,
   "module": "commonjs",
   "outDir": "dist",
   "rootDir": "src",
 },
 "include": [
   "src/**/*"
 ],
 "exclude": [
   "node_modules"
 ]
}
  • strict: 타입 검사를 엄격하게 한다. false로 하면 타입스크립트를 사용하는 의미가 없다.
  • include: ts 파일을 js로 컴파일할 폴더 지정
  • exclude: js 컴파일 제외 폴더 지정
  • target: 컴파일 js 버전. 보통 es5를 기준으로 한다.
  • lib: 컴파일할 때 포함될 라이브러리 목록
  • module: js 파일 간에 import 시 어떤 문법을 사용할지 지정한다. (commonjs는 require 문법, es2015와 esnext는 import 문법)
  • outDir: 컴파일된 js가 생성되는 경로
  • roodDir: 시작 경로
  • allowJs: ts 파일을 컴파일할 때 js 파일도 포함할지 설정. 기존 자바스크립트 프로젝트에서 타입스크립트로 적용할 때 유용하다.
  • esModuleInterop: export default가 없는 라이브러리도 * as 없이 불러올 수 있다.

 

6. package.json에서 build 설정을 해준다.

(package.json)

{
  "name": "client",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "tsc --build", // npm run build 시 컴파일된다.
  	"clean": "tsc --build --clean" // build 지우기
  },
  "author": "cw",
  "license": "ISC",
  "dependencies": {
    "typescript": "^4.5.5"
  },
  "devDependencies": {
    "ts-node": "^10.5.0"
  }
}

 

7. src 폴더에 테스트용 ts 파일 생성 후, 컴파일 해본다.

package.json에서 build 시 타입스크립트가 컴파일 되도록 설정했기 때문에 build 명령어를 입력하면 된다.

build 명령어
npm run build

 

(컴파일 전 폴더 경로 예시)

client
├── package-lock.json
├── package.json
├── src
│   └── test.ts
└── tsconfig.json

 

tsc는 typescript compiler의 약자다. tsc를 실행하면 아래와 같이 dist 폴더와 컴파일된 js 파일이 생성된다.
위에서 "outDir": "dist"로 컴파일 설정을 해두었기 때문에 dist 폴더(배포 폴더)가 아웃풋 경로로 지정된 것이다.

(컴파일 후 폴더 경로 예시)

client
├── dist
│   └── test.js
├── package-lock.json
├── package.json
├── src
│   └── test.ts
└── tsconfig.json

 

build한 파일을 모두 지우고 싶다면, 아래 명령어를 입력한다.

npm run clean

'Program > TypeScript' 카테고리의 다른 글

vscode 에서 .ts 파일을 바로 실행/디버그  (0) 2023.05.17

저승탐방기

Posted by 나에요임마
2023. 3. 27. 18:44 Story/소설

어느 할머니 두분이 좁은길 산책을 한다.

맛집으로 한 할머니는 위에 집, 다른 할머니는 아랫집에서 먹기로 한다.
나는 힘들어서 위에집으로 따라갔다.

할머니는 주인 할아버지에게 주문을 햇으나 무슨맣인지 모른다.

조그만한 멍멍아가 내 앞에서 제자리에서 빙글빙글 돈다
그러더니 내 팔을 물고 놔주지 않는다
나는 아파서 뿌리치려 했지만 놓지 않는다.
가까스로 떼어놓고 개를 후려패서 잡는다.

나는 가게에서 파는 음식이 살점 같다는 느낌이 들었다. 무서워서 도망친다 

검은색으로 된 형체가 내게 다가온다.
나는 될대로 되라지 라며 몸을 움츠리고 눈을 감았다.
내 몸위에 그 형체는 덧씌어졌지만 아무 느낌도 나지 않았다. 그냥 연기가 내 몸 위에 걸쳐진 느낌?

검은 형체는 내게 말했다. 난 과거에 너에게 도움을 받았어.

난 기억에 없다.

그럴 수밖에, 너는 무리 속에 있었는걸

그리론 나에게 가르쳐 주었다.
5방3신
나는 영원히 살기 때문에 극단적으로 한 수치가 높다.
다치진 않지만 고통은 있다. 고로 열라 아프다

나는 싸우는 법을 배웠다. 내 육체를 다루는 법. 발로 차는 밭법. 두 손이 묶이면 팔 하나를 더 만들어 팬다.
영체는? 어차피 내게 피해를 못주니 무시한다

'Story > 소설' 카테고리의 다른 글

현대화된 저승길  (0) 2024.01.20
다시 만나  (0) 2023.03.11
서큐버스  (0) 2022.03.01
천국 탐방기  (0) 2022.02.21

면접때 물어보면 좋은 질문

Posted by 나에요임마
2023. 3. 11. 22:06 Story/Development story

1. 개발 팀

  • 인원 구성
  • 시니어 비율
    시니어는 1~2명 이상 있으면 좋지만, 그렇지 않더라도 대화 과정에서 배울게 많고, 존중받는 면접 경험이면 괜찮다.
  • 어떤 경험의 시니어
  • 팀 전체 인원 규모
  • 6명 정도가 좋다고 생각한다.
  • 팀 규모가 크다 보면, 소통에 드는 시간이 커지게 되는 측면도 많고, 팀 동료들의 작업 물이나, 생각을 들여다보는 데에 시간을 들이기 쉽지 않다.
  • 회의실이나, 카페테리아에서 자리 찾기도 수월한 수라고 볼 수 있다.
  • 소통 방식
  • 자연스러운 스몰토크 속에서, 서로에게 영향을 주고받는다. 이러한 계기가 자주 있고, 이를 지향하는지 확인해 봐야 한다.
  • 코드 리뷰
  • 어떠한 규칙을 가지고 하는지
  • 핵심 논점

 

  • 설계 리뷰/공유
  • 문서화에 대한 노력
  • 자동화에 대한 노력

 

2. 리더 면접 (CTO나, 실장, 랩장 등)

  • 조직 운영 규칙
  • 포괄적인 질문을 할 때, 조금 더 많은 정보를 얻게 되는 경우가 있다. 이때 얻은 정보를 바탕으로 팀장 면접 혹은 개발 팀 면접에서의 오차를 통해 해당 회사가 일관된 문화를 가졌는지, 혹은 그렇지 않은지 확인할 수도 있겠다.
  • 개발과 사업의 밸런스
  • 몇 대 몇인가
    내 선호도를 말하자면, 개발 5:5 또는 6:4 사업 혹은 사업 6:4도 괜찮다고 생각한다.
  • 개발 9:1, 8:2, 7:3 사업 이런 경우도 썩 좋지 않다. 개발팀이 유닛 테스트 커버리지 달성률 높이는데 한 달 쓰고 스트레스 테스트한다고 한 달 쓰고 아키텍처 우아하게 만든다고 세 달 쓰고
  • 어떠한 사람이 좋은 개발자라 생각하는가
  • 자신이 그런 개발자가 되고 싶은지
  • 그런 개발자의 자질을 가지고 있다면 잘 맞을 확률이 높다
  • 앞으로의 기술 리딩 방향
  • 바퀴의 재발명 or 잘 가져다 쓰기
  • 신기술 or 안정적인 기술
  • 안정적이게 변화 주는 방법
  • CTO는 개발자 베이스가 탄탄할수록 좋다.
  • 다른 부분에서의 강점이 있는 경우도 좋지만, 기술적인 판단, 리딩, 공감, 소통을 위해서는 대화가 통해야 하는데, 개발자 베이스를 빨리 벗어난 리더나, 특정 경험만 뾰족한 리더는 보통 균형적이고, 합리적인 판단을 못 내리는 경우가 많았다.
  • 팀 구성
  • 개발 조직들은 어떻게 구성되어 있으며, 롤이 어떻게 나뉘어 있는지 확인해 보면 좋다. 이를 통해 나에게 요구되는 역량, 혹은 내가 부족하지만 키워서 커버해야 되는 역량, 지원받을 수 있는 부분 등을 판단할 수 있다.
  • 예시
    - 기술 지원
    인프라 팀 or 데브옵스
    빅데이터 or 빅데이터 인프라 팀
    DB팀
    - 백엔드
    - 프론트엔드
    - 앱 개발
    - 데이터 분석팀

3. 팀장

  • 관리 규칙
  • 어떠한 가치관으로 리딩하는지
  • 그 가치관이 정립되지 않은 경우에는, 회사 전사 규칙을 따라가는 경우가 많거나, 자신의 독단으로 회사의 방침과 무관한 규칙을 가졌는지 등을 체크해 보는 것이 좋다.
  • 관리 방식
  • 일정 관리 방식
  • 업무 롤에서의 개인의 자율 범위
  • 근태 관리
    - 유연할수록, 일정 관리는 더 타이트해야 함
    - 야근이란 의미의 타이트가 아니라, 일정 준수 개념
    - 일정 연기의 당위성이 떨어지기 쉬움
  • 토론 문화
  • 최종 결정권은 리더에게 있되, 논의 자체는 열린 구조가 좋다고 생각한다.
  • 교육 문화
  • 비용 지원도 크면 좋다.
    - 인프런, 패캠
    - 도서 지원 무제한에 근접하면 좋음
    - 시간도 지원주면 좋다
    - 사외 교육/ 세미나 지원
    - 팀 내 스터디
    - 기술 토론 시간
    - 기술 피드백 시간
  • 어떠한 개발자가 팀에 필요하다고 생각하는지
  • 딜러
    - 그냥 능력이 출중함
    - 이 사람 한 명이 일반 개발자 * 5 이상
  • 탱커
    - 묵묵히 성과가 덜되는 일
    - 누군가 해야 되는 일
    - 커리어 관리에 덜 도움 되지만, 꼭 필요한 일
    - 시간 많이 드는데 효율은 적은 일
    - 단순 노가다
    - 혹은 이에 대한 자동화
  • 힐러
    - 팀의 분위기 메이커
    - 무슨 얘기를 해도 호응
    - 회식, 스몰토크, 식사 시간 등에서 편하게 대화를 이어나가는 분위기 메이커
    - 무거운 이야기 제때 끊어주며 대화 온도/주제 조절
    - 어떠한 업무의 방향이나, 의문점, 연구가 필요한 난도 높은 이슈를 개선안 제시 (힐러니까 이 부분은 약할 수도 있고, 이 부분도 잘 할 수도 있고)
    - 해결책 마련
    - 같이 고민
    - 리서치 도움

 

  • (저를 뽑으신다면) 저는 어떤 면이 강점이 있어서 팀에 필요할 거라고 생각하셨나요?
  • 제 이력서에 어떤 부분이 팀에 도움이 될 거 같아서, 면접 제안을 주셨나요?