[ Node.js ] 타입스크립트(TypeScript)




ts

타입스크립트(TypeScript)



node_modules기준으로 yarn add ts-node를 설치한것이기때문에

"scripts": {
    "start:dev": "ts-node index.js"
  },

스크립트를 따로 처리해줘야하고,

터미널에서 ts-node index.js라고 하면 컴퓨터 내에서 찾으려고 하므로 명령어가 먹지 않는데

폴더 내에서 node_modules기반으로 yarn 추가를 해준것이므로

스크립트를 추가해서 처리해주면 그 뒤로는 코드가 잘 작동한다.

(근데 nest.js를 사용하면 따로 안해도 잘 뜬다.. 처음이니까 해본거)




devDependencies VS dependencies

"devDependencies": {
  "typescript": "^4.8.4"
},
"dependencies": {
  "ts-node": "^10.9.1"
}

devDependencies : 실행할때는 필요없음. 개발할때 필요함. vscode에서 필요함. 실제로 실행될때는 js로 실행되기때문에 typesrcipt

dependencies : 실행할때 필요한 Lib



그러면 devDependencies안에 있는 "typescript": "^4.8.4" 를 dependencies에 넣어도 실행될까?

⭕️된다. devDependencies는 정말 vscode에서 사용하기 위한 npm일뿐이라

dependencies에 넣어도 아무 상관없이 잘 된다.

그런데 배포할때 dependencies를 다 설치하게 되면 15-20분정도 걸리기 때문에 이때는 dev디펜던시 말고 디펜던시만 설치해야한다.

디펜던시만 설치하게되면 시간이 반으로 준다.

그래서 이때는 실행파일(=디펜던시)만 설치하게 도와주는 명령어가 있음

$ yarn install --production

이렇게 명령어를 내리면 dependencies만 설치됨.

이건 프로젝트 배포할때 사용함.

배포할때는 vscode로 사용하는 환경을 설정할 필요가 없기 때문에 dev디펜던시는 굳이 설치할 필요가 없다.


타입스크립트 boolean타입

0 : 거짓

1(양수) 또는 -1(음수) : 참

"" : 거짓

" " : 참

"false" : 참

false : 거짓

NaN, null, undefined : 거짓


TypeScript 예제

//불린타입
let eee: boolean = true;
eee = false;
eee = "false"; //true로 작동함	//에러: Type 'string' is not assignable to type 'boolean'.

let fff: number[] = [1, 2, 3, 4, 5, "안녕하세요"]; //에러:Type 'string' is not assignable to type 'number'
let ggg: string[] = ["철수", "영희", "훈이", 10]; //에러:Type 'number' is not assignable to type 'string'
let hhh: (string | number)[] = ["철수", "영희", "훈이", 10]; //타입을 추론해서 어떤 타입을 사용하는지 알아보기

interface IProfile {
  name: string;
  age: number | string;
  school: string;
  hobby?: string;
}
//객체타입
const profile: IProfile = {
  name: "철수",
  age: 8,
  school: "다람쥐초등학교",
};

profile.name = "훈이";
profile.age = "8살";
profile.hobby = "수영";

function add(num1: number, num2: number, unit: string): string {
  return num1 + num2 + unit;
}
const result = add(1000, 2000, "");

const add2 = (num1: number, num2: number, unit: string): string => {
  return num1 + num2 + unit;
};
const result2 = add2(1000, 2000, "");

//any타입
let qqq: any = "철수"; //자바스크립트와 동일하기때문에 권장안함

public, private, protected, readonly

class Aaa1 {
  power;
  constructor(mypower: number) {
    this.power = mypower;
  }

  ggg() {
    console.log("나의 공격력은 " + this.power + " 이야!!");
  }
}

근데 만약 constructor(mypower: number)public, private, protected, readonly 중 하나라도 붙어있다면

this.power = mypower 이 자동생성됨




© 2018. by sora

Powered by sora