[강의록] 타입스크립트로 블록체인 만들기

OWLLL ·2025년 4월 7일
  • 노마드코더 : 타입스크립트로 블록체인 만들기

몇 번 시도하다가 드디어 완강!

블록체인을 실제로 만든다고 생각했는데, 그런 건 아니었고,
타입스크립트에 좀 더 중점을 둔 강의였다.

  • 데이터 타입,
  • 접근제어자
  • type, interface, class
  • javascript 와 typescript 호환
  • ts config
  • 기능 만들기 (블록체인)

내용은 다른 강의와 비슷한데.
깊게 설명해줘서 유익했다.



강의록


접근제어자

키워드설명접근 범위특징
public클래스, 메소드, 변수 등을 외부에서 접근 가능하게 만듦클래스 외부와 내부, 다른 클래스에서 모두 접근 가능모든 곳에서 접근 가능
private클래스 내부에서만 접근할 수 있도록 제한클래스 내부에서만 접근 가능외부에서는 접근 불가, 클래스 내부에서만 사용 가능
protected클래스 내부와 그 클래스를 상속한 자식 클래스에서만 접근 가능클래스 내부 및 자식 클래스에서만 접근 가능자식 클래스에서 접근 가능, 외부에서는 불가
static인스턴스 없이 클래스 자체에서 접근할 수 있도록 만듦클래스 이름을 통해 접근 가능클래스 레벨에서 접근 가능, 객체 인스턴스 필요 없음
  • static 은 javascript 문법

read-only

  • 외부에서 접근은 가능하지만 수정은 불가능.
 	public read-only food: strong = 'kimchi';

타입(Type) 과 인터페이스(Interface)

  • 타입을 지정하는 것보다 타입스크립트가 타입을 추론하게 하는 것이 좋다.
  • 타입스크립트에서는 클래스와 오브젝트의 타입을 정의할 때는 interface 를 그 외에는 type 을 사용할 것을 권고함.

타입(Type)

  • 복합 타입, 유니언 타입등 다양한 타입 정의 가능
  • 같은 이름의 타입을 새로 정의하면 에러 발생
// type 으로 변수 타입 지정
type food = string
type StringOrNumber = string | number;  // 유니언 타입

// type 으로 객체 타입 지정
type food = {
	snack : string,
    meal : string
}

// 확장
type food = snack & {
	meal: string
}

인터페이스(Interface):

  • 다른 인터페이스를 상속하여 확장할 수 있다.
  • 추상클래스로도 클래스의 형태를 정의할 수 있지만 javascript 로 변환한 뒤에도 코드가 남아있기 떄문에 인터페이스로 작성하는 것이 더 가볍다.
  • 같은 이름의 인터페이스를 새로 정의하면 각 인터페이스가 결합됨.
interface food = {
	snack : string,
    meal : string
}

interface food = {
	snack : string,
    meal : string
}

// 확장
interface worldFood extends food {
	koreafood: string
}

typescript 에서 javascript 를 사용하는 법

  • d.ts 파일 사용 (Declaration File)
  • 패키지나 라이브러리는 js 로 개발된 경우가 많아서 타입지정이 필요하다 .node_modules/@types 에 관련된 타입이 지정되어있다.

javascript 를 typescript 처럼 사용하는 법

  • jsdoc 을 사용하면 js 소스에서 type hint를 볼 수 있음
    - https://jsdoc.app/
  • @ts-check 주석은 type 이 맞지 않을 경우 에러를 표시함
	// @ts-check

	/**
     * show error 
     * @param errorMessage 
     * @returns 
     */

tsconfig.json

{
  "include": ["src"],
  "compilerOptions": {
    "outDir": "build",
    "target": "ES6",          // target 버전으로 컴파일됨
    "lib": ["ES6"],		      // es6 에 대한 정보를 가지고 있음. 메서드 자동 완성 등을 지원함.
    "strict": true,			  // javascript 사용 어려움. d.ts 파일 사용 등 타입 정의 필요
    "esModuleInterop": true,
    "module": "CommonJS"	  // node.js 에서 사용하는 모듈 시스템 사용 가능 
  }
}

crypto module

  • node 의 내장 모듈인 crypto 모듈을 사용하여 SHA-256 해시를 생성
	crypto.createHash("sha256").update( {해시로 변경하고 싶은 문자} ).digest("hex");
  • crypto.createHash("sha256") : SHA-256 해시 객체를 생성.
    - SHA-256 : 256비트(32바이트) 길이의 고유한 해시 값을 생성하는 암호화 알고리즘
  • .update( {해시로 변경하고 싶은 문자} ) : 데이터를 해시 객체에 추가합니다.
  • .digest("hex") : 최종 해시 값을 계산하고, 16진수 문자열 형식으로 반환.
profile
새벽 2시만 되면, 안 자고 싶어진다.

0개의 댓글