본문 바로가기
개발 Study/JS,TS

[Typescript] 타입스크립트로 블록체인 만들기-(1)Typescript 기초 배우기

by jiyoon_92 2022. 8. 29.
반응형

노마드 코더 [Typescript] 기초 - 블록체인 만들기


코딩쟁이들이라면 들어봤을 법한 유튜버 '노마드 코더' Typescript 무료 강의로 아래 사이트에 들어가면 볼 수 있다.

https://nomadcoders.co/typescript-for-beginners

 

타입스크립트로 블록체인 만들기 – 노마드 코더 Nomad Coders

Typescript for Beginners

nomadcoders.co

Javascript에 Types를 선언해 추적이 안되던 error나 type들에 대해 쉽게 알 수 있고, javascript의 superset이기 때문에 다른 라이브러리들에 적용해도 쉽게 사용이 가능하다. Javascript를 객체지향적으로 사용하고 싶을 때 용이하며 나 같은 윈도우 개발자 (C++/C#)가 배우는데 러닝커브가 그렇게 높진 않았다. 다만, type을 선언해줌으로써 생산성 측면에서는 떨어질 수 있으나 애초에 에러를 먼저 잡아낼 수 있기에 뭐가 더 낫다고 할 순 없지만 Nest.js, Next.js를 쓰기위해 미리 배우는 것도 나쁘지 않아 강의를 들어보았다.

Typescript를 사용하기 위해선 Node.js 설치가 필수이므로 아래 설치 방법을 보고 설치하면 된다.

2022.06.29 - [개발 Study/Node, js, react] - [Node.js] Node.js 및 npm 설치하기

 

[Node.js] Node.js 및 npm 설치하기

1. npm 이란? Node Package Manager(NPM) Node.js의 패키지 관리자다. Node.js에서 사용하는 모듈들을 패키지로 만들어 npm을 통하여 관리하고 배포하고 있다. Python 공부할때 모듈 설치시 사용했던 pip와 비슷..

chuun92.tistory.com


1. Type 선언 방법

변수를 선언한 후 ':' 콜론을 입력 한 뒤에 type을 선언한 후 type에 맞는 값을 할당해 준다. 선언된 type에 맞는 값이 아닌 경우 에러가 표시된다. (Javascript와 다른점)

let a : string = "hello";
let b : boolean = false;
let c : number[] = [1, 2, 3];
c.push(4);

객체 타입은 아래와 같이 선언할 수 있다. '?'표시는 반드시 넣어도되지 않는 값을 뜻한다.

type Player = {
    name:string,
    age?:number
}


const player : Player = {
    name : "nico",
    age : 12
}

const playerMaker = (name:string) : Player => ({name});

const nico = playerMaker("nico");
nico.age = 12;

객체로 선언된 nico는 기존 javascript와 같이 type에 맞는 값으로 값을 재할당 해줄 수 있다.

반응형

2. any, unknown, void, never 타입

any는 '어떤 타입이든' 의 의미를 담고 있어서 기존 Javascript처럼 typeless로 사용하고 싶은 경우에 에러없이 사용된다.

unknown은 '알려지지 않은'의 의미를 담고 있어서 아래와 같이 타입이 뭐냐에 따라 분기를 나눠서 값을 할당할 수 있다. 그러나 타입 지정을 해주지 않고 그냥 사용하는 경우 에러가 날 수 있다.

let u:unknown;
if (typeof u === 'number') {
    let i = u + 1;
}
if (typeof u === 'string') {
    let b = u.toLowerCase();
}

void는 가장 자주 쓰이며 return 값이 없는 함수 타입으로 사용된다.

never. 함수가 절대 return을 하지 않는 경우 사용된다. ex)error를 throw하는경우


3. Call signature

type을 미리 선언해 두고 그 타입을 이용하여 여러 함수들을 생성할 수 있다. parameter와 return 값의 Type을 미리 선언한다. call signature를 여러개 선언하고 오버로딩하는 방식으로 사용할 수도 있다.

type Add = (a:number, b:number) => number;
const add:Add = (a, b) => a + b
type Add = {
	(a:number, b:number) : number
    (a:number, b:string) : number
}

const add: Add = (a, b) => {
	if (typeof b === "string") return a
    return a + b
}

1-1. Overloading

type Config = {
    path: string,
    state: object
}

type Push = {
    (path:string):void
    (confing:Config):void
}

const push:Push = (config) => {
    if (typeof config === "string") console.log(config)
    else {
        console.log(config.path)
    }
}
type Add = {
    (a:number, b:number) : number
    (a:number, b:number, c?:number) : number,
}

const add:Add = (a, b, c?:number) => {
    if (c) return a + b+ c
    return a + b
}

add(1, 2)
add(1, 2, 3)

 

반응형

댓글