본문 바로가기

프로그래밍/typescsript27

타입스크립트의 인터페이스 인터페이스란? 인터페이스는 상호 간에 정의한 약속이나 규칙을 뜻하며, 타입스크립트에서의 인터페이스는 보통 다음과 같은 범주에 대해 약속을 정의할 수 있다. 객체의 스펙(속성과 속성의 타입) 함수의 파라미터 함수의 스펙(파라미터, 반환 타입 등) 배열과 객체를 접근하는 방식 클래스 인터페이스로 함수 정의하기 // 인터페이스로 함수 정의하기 interface Add{ // (num1:number, num2:number): void; -> return 값이 없을때 (num1:number, num2:number): number; } const add : Add = function(x,y){ return x+y; } add(10,20); interface IsAdult { (age:number) : boolean.. 2022. 11. 21.
타입스크립트의 함수 웹 애플리케이션을 구현할 때 자주 사용되는 함수는 타입스크립트로 크게 다음 3가지 타입을 정의된다. 함수의 파라미터(매개변수) 타입 함수의 반환 타입 함수의 구조 타입 함수의 기본적인 타입 선언 아무런 타입을 정하지 않을때는 void이란 타입을 준다. function sum(a: number, b: number): number { return a + b; } 함수의 인자 타입스크립트에서는 함수의 인자를 필수적으로 줘야한다. 함수의 매개변수를 설정할때도 undefined나 null이라도 인자로 넘겨야하며, 컴파일러에서 정의된 매개변수 값이 넘어왔는지 확인해야한다. 정의된 값 이외로 추가적인 인자를 받을 수 없다. function sum(a: number, b: number): number { return .. 2022. 11. 21.
타입스크립트의 타입 타입스크립트의 타입 : 을 사용해서 자바스크립트 코드에 타입을 정의하는 방식을 타입표기(Type Annotation)이라고 한다. String let str: string = 'hi'; Number let store: number = 123412342; // number 타입이 너무 길때는 구분을 위해서 _를 넣을수 있다. let store_1: number = 123_4123_42; Boolean let isLoggedIn: boolean = false; Array let arr: number[] = [1,2,3]; let arr: Array = [1,2,3]; Tuple 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식을 의미한다. 정의하지 않은 타입, 인덱스로 접근할 경우 오류가 생.. 2022. 10. 11.
[220701] geth로 트랜젝션 생성하기 이전 포스팅에서 이어지는 포스팅 https://hancoco.tistory.com/264 [220701] GETH로 RPC 통신하기 / 메타마스크 연결하기 사용할 디렉토리에 geth 세팅하기 node 파일 안에 keystore 디렉토리가 생성되며 account 파일이 생성하는 코드. $ mkdir `node` $ source ~/.bash_profile $ geth --datadir node account new node 파일 안에 ke.. hancoco.tistory.com jest 세팅하기 $ npm init -y $ npm install web3 jest 다음 파일들을 생성해준다. // package.json "scripts" : { "test":"jest" }, // .eslintrc { "ext.. 2022. 7. 8.
[220630] 이더리움 private 네트워크 생성 / peer 연결하기 제네시스 블록을 생성하기 위한 초기값을 설정하기 // genesis.json { "difficulty": "200000", "gasLimit": "3100000", "alloc": {}, "config": { "chainId": 7722, "homesteadBlock": 0, "eip150Block":0, "eip155Block":0, "eip158Block":0 } } chainId 제네시스 블록 외에도 chainId가 맞아야 채널을 열 수 있다. 채널넘버는 7722로 작성했다. alloc 제네시스 블록을 생성할때 해당 계정에 밸런스(잔액)를 기본적으로 넣고 시작할 수 있는 요소. ( 예를 들어, 시작부터 다른 사람에게 금액을 보내야할때 생성해야할때 작성. ) homesteadBlock 이더리움은 총 .. 2022. 7. 8.
[220701] GETH로 RPC 통신하기 / 메타마스크 연결하기 사용할 디렉토리에 geth 세팅하기 node 파일 안에 keystore 디렉토리가 생성되며 account 파일이 생성하는 코드. $ mkdir `node` $ source ~/.bash_profile $ geth --datadir node account new node 파일 안에 keystore파일과 계정이 담긴 파일이 생성된걸 볼 수 있다. 터미널을 새로 켜고 go-ethereum이 설치된 위치로 가서 다음 코드를 실행하면 여러파일이 생긴다. $ make all 그 중에서 build/bin 디렉토리 안에 가면 puppeth와 bootnode가 설치되었는지 확인한다. puppeth은 설정을 도와주고, bootnode는 네트워크 피어연결을 도와주는 서버다. puppeth 세팅하기 네트워크 이름, 네트워크 .. 2022. 7. 6.
[220630] GETH를 통해 실제 이더리움 네트워크와 연결하기 geth 실행 geth가 잘 설치 되었다면 다음 경로에 keystore와 chaindata 디렉토리가 설치되어있을것이다. 이 장소에 블러온 블럭 정보들이 차곡차곡 저장된다. mac : ~/Library/Etherum linux : ~./ethereum $ geth // 실행이 안된다면 다음을 실행한 후 재실행 $ source ~/.bash_profile 블럭 동기화 geth를 실행시키면 이더리움 메인넷의 블럭 정보들을 가져오는게 이를 블럭동기화라고 한다. keystore : geth가 개인키를 저장하는 공간 geth/chaindata : 블럭헤더, 바디, 트랜젝션(tx) 같은 정보들이 저장되는 공간 블럭동기화 3가지 full sync : 모든 블럭,바디,트랜젝션(tx),헤더 같은 블록의 내용들을 모두 받.. 2022. 7. 6.
[220627] private 네트워크 생성 / GETH GETH란? GETH는 이더리움재단이 제공하는 공식 클라이언트 소프트웨어로, Go 언어로 개발되었다. Go ETHereum을 줄여서 GETH. 네트워크 내의 다른 이더리움 클라이언트(노드)에 연결하는 작업을 먼저 시작하며, 블록체인의 전체 사본을 내려받는다. 블록체인의 복사본을 최신 상태로 유지하기 위해 끊임없이 다른 노드와 통신하려한다. 블록을 채굴하며, 블록체인에 트랜젝션(tx)을 추가하고, 검증하고 실행한다. RPC를 통해 상호작용할 수 있는 API를 노출해 서버 역할을 하기도 한다. EVM을 생성할 수 있는 Geth Javascript console 프로그램이 포함되어 있다. EVM은 이더리움 기반의 가상머신에서 실행되는 이더리움 가상머신의 약자다. go 설치 $ go version // vers.. 2022. 7. 6.
[220629] * 메타마스크가 브라우저에 설치되어 있는 상태에서 작업 * window.ethereum $ npx create-react-app front 제네시스 블럭이 같아도 chainID가 다르면 다른 네트워크로 넘어간다. 제네시스 블럭과 chainID값이 같아야 온전히 같은 블록임. 이더리움 네트워크 상에서 고유한 식별자 역할을 함 chainId는 5글자 안 숫자로. $ $ npm install -g ganache-cli $ ganache-cli --chainId 7722 //useWeb3.js import { useEffect, useState } from "react"; const useWeb3 = () => { useEffect(()=>{ console.log(window.ethereum) }) return.. 2022. 7. 6.
[타입스크립트] class(클래스) vs interface(인터페이스) 객체를 생성하기 위한 템플릿 Class 상속을 통해서 중복된 코드 작성을 피하고 상속받은 기능을 확장하기 위해서 사용하는 클래스. 인스턴스를 생성하기 위한 생성자함수 Contructor 비슷한 여러개의 객체를 찍어내기 위해서 만든 붕어빵틀, 물건 설계도 인스턴스도 결국 객체를 생성하기때문에 클래스의 모든 기능은 객체를 위해 굴러간다고 생각하면 편하다. 객체를 생성하기 위한 인스턴스 Instance contructor에 의해서 만들어진 객체, 붕어빵, 물건 // 접근제한자 public을 사용한 클래스 Square class public Square{ x: number; y: number; // 반드시 클래스 안에 생성자(constructor)를 선언해야한다. constructor(_x:number, _y:.. 2022. 6. 17.