TS_blockChain 만들기 (1)

이지·2021년 2월 13일
0

typeScript

목록 보기
1/7

타입 스크립트는 개발하는 당시에는 js 보다는 형에 있어 훨씬 strict 한 규칙이 적용되어 까다롭고, 개발 속도가 더딘듯 느껴지기도 하지만 코드의 완성도나 디버깅시 용이한 장점을 가진다고한다.

예전에도 string 인줄 알았던 데이터가, 실은 다른 형태여서 typeOf 로 타입을 검증해서 디버깅했던 적이 있다. json file 역시 stringify로 스트링 형변환 해주는 것이 필수적이다. 사소해 보이는 type 이지만 막상 코드가 왜 안돌아가나 한참 고민하던것이 실은 type 문제였던 적이 꽤 된다. 그렇다고 사람이 일일이 타입을 확인하는 것은 시간도 많이 걸리고, 정확성이 떨어지기에, 방대한 코드 작업을 할때 내가 미처 확인하지 못한 부분까지 자동으로 잡아내 줄 수 있다면 큰 도움을 받을 수 있을것이다. 그래서 등장한 것이 "Typescript" 되시겠다.

1. params 갯수를 fix해준다.

const name = "Nicolas",
  age = 24,
  gender = "male";

const sayHi = (name, age, gender) => {
  console.log(`hello ${name}, you are ${age}, you are a ${gender}`);
};

sayHi(name, age, gender);
// 여기서 params 한개가 누락되면 ts에서는 compile 되지 않는다.
// params 옆에 ? 를 붙이면 optional 하게 읽힌다. ex) gender?

export {};

2. params 와 return 값의 형을 명시한다.

const sayHi = (name: string, age: number, gender: string): string => {
  //반환하는 함수의 형도 명시해주어야 한다. 여기서는 string
  return `hello ${name}, you are ${age}, you are a ${gender}`;
};

console.log(sayHi("jiyoung", 29, "female"));

3. Interface 로 obj 형도 전달한다.

interface Human {
  name: string;
  age: number;
  gender: string;
} //interface 는 js 로 compile 되지 않는다. 이를 대신해 class 를 사용함.

const person = {
  name: "jiyoung",
  age: 24,
  gender: "female",
};

const sayHi = (person: Human): string => {

  return `hello ${person.name}, you are ${person.age}, you are a ${person.gender}`;
};

console.log(sayHi(person));

4. Class 를 사용하여 instance 를 생성한다.

class Human {
  public name: string;
  public age: number; //privacy 로하면 외부에서 접근 불가.class 내에서만 접근 가능.
  public gender: string;

  // class 가 생성될때마다 호출
  constructor(name: string, age: number, gender?: string) {
    this.name = name; //property name 과 같다는 뜻
    this.age = age;
    this.gender = gender;
  }
}

const person = {
  name: "jiyoung",
  age: 24,
  gender: "female",
};

const sayHi = (person: Human): string => {
  return `hello ${person.name}, you are ${person.age}, you are a ${person.gender}`;
};

console.log(sayHi(person));

const lynn = new Human("lynn", 18, "female");
console.log(sayHi(lynn));
profile
이지피지레몬스퀴지🍋

1개의 댓글

comment-user-thumbnail
2021년 2월 13일

대단해요!

답글 달기