레이블이 programming인 게시물을 표시합니다. 모든 게시물 표시
레이블이 programming인 게시물을 표시합니다. 모든 게시물 표시

9.10.2020

TypeScript 기본 개념 정리




아래 정리는 노마드코더의 TypeScript 강의를 듣고 복습으로 작성한 것입니다.

TypeScript란


  • TypeScript는 JavaScript를 기초로 해서 만들어졌다.
  • 말랑한 언어인 JavaScript에 엄격하게 타입을 구분해서 사용하는 것이 TypeScript이다.
  • TypeScript는 컴파일 되어서 JavaScript로 사용된다.
  • 사소한 실수를 하더라도 TypeScript는 컴파일 과정에서 걸러지기 때문에 버그를 줄일 수 있다.

설치


  • npm install typescript --save-dev (개별 프로젝트에 설치시)
  • npm install g typescript (컴퓨터 전체에서 사용시)

tsconfig.json


  • TypeScript가 어떻게 JavaScript로 변환될지 옵션을 설정해주는 파일이다.
  • 기본 예시


{
  "compilerOptions": {
    "module": "commonjs",
    "target": "ES2015",
    "sourceMap": true,
    "outDir": "dist"
  },
  "include": ["index.ts"],
  "exclude": ["node_modules"]
}


tsc



  • tsc 를 터미널에 입력 후 실행하면 tsconfig.json의 설정에 따라 TypeScript 파일이 JavaScript 파일로 바뀐다.
  • package.json에서 start 명령어를 node (실행할 파일경로) , prestart 명령어를 tsc 로 해놓으면 다음과 같은 순서로 실행된다.
    1. tsc 를 실행하여 JavaScript 파일 생성
    2. node 명령어로 생성된 파일 실행

Types



P.S. VS Code를 사용한다면 TS Lint 익스텐션을 설치할 것. TypeScript Error를 나타내준다.
P.S. tsc-watch 모듈을 dev모드로 설치 후, package.json의 script에서 "start": "tsc-watch --onSuccess (백슬래쉬)" node (파일경로) (백슬래쉬)" 로 지정해주면 TypeScript 파일이 업데이트 될 때마다 자동으로 tsc 후 node 명령어를 실행시켜준다.

아래는 타입을 어떻게 지정하는지 보여주는 예시 코드이다.
const sayHi = (name:string, age:number):string => "someValue";

Interface


  • interface 로 선언한 타입은 TypeScript의 타입 지정할 때 사용될 수 있다.

interface Human {
  name: string;
  age:number;
  gender: string;
}

const person = {
  name: "me",
  age: 100,
  gender: "female"
}

const sampleFunction = (person:Human) : string => "someValue";

Class


  • interface 는 JavaScript 코드로 컴파일 되지 않는다.
  • 그런데 경우에 따라서는 이와 같은 구조가 JavaScript 코드로 컴파일 되어야 할 수 있다.
  • 그럴 때는 class 를 사용한다.

class Human {
  public name: string;
  public age: number;
  public gender: string;
  constructor(name: string, age: number, gender?: string) {
    this.name = name;
    this.age = age;
    this.gender = gender;
  }
}

const me: Human = new Human("me", 100, "female");

P.S. 파일 끝에 export {}; 코드를 넣어주어야 TypeScript Error가 나지 않는다.

P.S.
변수명 뒤에 ? 를 붙여주면 함수를 호출할 때 선택적으로 기입할 수 있게 된다.
P.S. const me:Human[] 라고 적어주면 me라는 변수는 Human이란 타입 요소들의 array가 된다.
Share:

I made a new portfolio website with React

thumbnail


I made new portfolio website


About a while ago, I built a personal portfolio website. I already had one, but it was just not look nice to me. SO, I decided to build another one. Again, I kept carried on with the concept of "Swimming Pool". But this time I worked differently.

  • First, I built chunks of vanilla JavaScript code on repl.it, which later became the React components of this project.
    • This process helped me a lot. I learned so much from making thing with vanilla JS.
  • Then, when I was working on React project, I divided the previous code into components , templates (layout of the each section), and pages (combines components and templates).
    • First, I thought this structuring is annoying, but it really did its job when I was refactoring this project. This big structure made me easy to find where I need to fix.


I Just LOVE web page that has its own concept


Yes I do. So I spent a lot of time building sea wave, bubbles and swimming rainbow fish. It can be look like little bit old fashion to someone, but whatever, I love it and that's it : D

here is the preview of my portfolio website.





What I've learned from this project



  1. how to convert vanilla JavaScript code(mostly DOM) to React states and hooks etc.
    • and realize how difficult that can be
  2. how to make CSS animation and JavaScript animation
  3. learned how to use svg tag(I used this skill to make a sea wave)
  4. learned how to use color palette from pinterest properly(since I'm suck with colors)
  5. A importance of mobile view
    • learned that I need to test a lot with different device width, and adjust font-size and ratio etc.


Share: