[ Node.js ] 타입스크립트(TypeScript)
in BackEnd
타입스크립트(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
이 자동생성됨