[Nomad-coders] Typescript로 블록체인 만들기 #2

김시아·2022년 7월 4일
0

타입스크립트를 빠르게 알기 위해 이 강의의 2, 3 챕터만 들을 예정이다.

Explicit Types vs Implicit Types

  1. 데이터와 변수의 타입을 명시적으로 정의할 수 있음
  2. 자바스크립트처럼 변수만 생성할 수 있음 -> 타입스크립트가 타입을 추론해줌
let a : boolean = true
let b = "hello"  -> 이 경우 변수 b의 타입이 String 이라고 추론해줌

이 강의는 짧고 가독성 좋은 코드를 만들기 위해 명시적 정의를 최소한으로..

Types of TS

player라는 object에 name은 필수 사항, age는 선택 사항이고 싶을 때 타입 정의 방법

const player : {
  name:string,
  age?:number
} = {
  name: 'sia'
}

여러명의 player가 필요할 때 alias 사용 가능

type Player = {
  name: string,
  age?: number  //type도 변수로 가능 (type Age = number;)
}

const sia : Player = {
  name: "sia"	
}

함수에서 return 타입 지정하는 방법

function playerMaker(name:string) : Player {
  return {
    name
  }
}

const sia = playerMaker("sia")
sia.age = 26
const playerMaker = (name:string) : Player => ({name})

readonly 속성 부여하기

//예시 1
type Name = string;
type Player = {
  readonly name: Name,  // 수정 불가
  age?: number  
}

//예시 2
const numbers: readonly number[] = [1, 2, 3]
numbers.push(1) //error

Type tuple (readonly와 같이 쓰기 가능)
: 항상 정해진 개수의 요소를 가져야 하는 array를 지정해야 할 때

const player: [string, number, boolean] = ['sia', 1, true]

Type any
: 비어있는 값을 쓸 때 기본값은 any
: 타입스크립트의 장점을 활용할 수 없으므로 이 강의는 사용하지 않는 것을 추천

let a = [] //a의 type은 any[]

Type unknown
: 어떤 타입인지 모를 때
: 타입 확인 작업을 하지 않으면 error

let a:unknown;

let b = a + 1 //error

if(typeof a === 'number'){
  let b = a + 1
}

Type void
: 아무것도 return 하지 않는 함수
: 보통 따로 지정해 줄 필요는 없음

Type never
: 많이 사용하지는 않음
: 함수가 절대 return 하지 않을 때
: (ex. 함수에서 예외가 발생하거나 타입이 두 가지 일수도 있는 상황..)

function hello():never{
  throw new Error('xxx')
}
function hello(name: string|number){
  if(typeof name === "string"){
    name //이 경우 name의 타입은 string
  } else if (typeof name === "number"){
    name //이 경우 name의 타입은 number
  }
  else { //변수 타입이 올바르게 들어온다면 실행되지 않을 부분
    name  //이 경우 name의 타입은 never
  }
}

0개의 댓글