타입스크립트(TypeScript)




타입스크립트(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