Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 귤 고르기
- Typescript
- userecoilvalue
- 42747
- Helmet
- usesetrecoilstate
- H-index
- 프로그래머스
- 티스토리챌린지
- 노마드코더
- 오블완
- Recoil
- useoutletcontext
- React
- 138476
- Outlet
- programmers
Archives
- Today
- Total
오늘도 코딩하나
[Typescript] 타입스크립트로 블록체인 만들기_(2) 본문
https://nomadcoders.co/typescript-for-beginners
타입스크립트로 블록체인 만들기 – 노마드 코더 Nomad Coders
Typescript for Beginners
nomadcoders.co
강의 내용 요약
#2.1 ~ #2.4
1️⃣ Typescript의 타입 시스템
(1) Javascript처럼 변수만 생성하기
let a = "hello"
a = "bye"
// Type 'number' is not assignable to type 'string'.
a = 1
- Typescript가 타입을 추론해준다.
→ a = "hello"라고 정의해줬고, Typescript가 a는 string이라고 추론했다.
→ 그에 따라 a = 1 숫자를 입력하니 오류가 발생한다.
(2) 데이터와 변수의 타입 명시적으로 정의하기
let b: boolean = true
b = false
// Type 'string' is not assignable to type 'boolean'.
b = "tistory"
let c : number[] = []
// Argument of type 'string' is not assignable to parameter of type 'number'.
c.push("1")
- 아무리 Typescript가 추론을 해준다고 해도 직접 정의를 해주는게 좋다!
2️⃣ optional parameter
player라는게 있고 player 중 몇몇은 age가 있고 몇몇은 age가 없지만 모두 name을 가지고 있다고 생각해보자
const player : object = {
name : "tistory"
}
// Property 'name' does not exist on type 'object'.
player.name
- player를 object로 설정하면 그 안에 name 값을 가져오지 못한다.
const player : {
name : string,
age? : number
} = {
name : "tistory"
}
if(player.age && player.age < 10) { }
- player에 대한 타입은 위와 같이 작성하면 된다
- 필수 파라미터가 아닌 선택적 파라미터에는 '?'를 붙여준다.
? : number | undefined
3️⃣ alias 타입 생성 방법
type Player = {
name : string,
age? : number
}
const player1 : Player = {
name : "tistory"
}
const player2 : Player = {
name : "naver",
age : 26
}
- 같은 타입으로 player1, player2를 만드는 경우에는 alias 타입을 생성하면 된다.(type Player)
4️⃣ argument / return 값의 타입 지정 방법
type Player = {
name : string,
age? : number
}
function palyerMaker(name:string) : Player {
return {
name: name
}
}
const palyerMaker2 = (name:string) : Player => ({name})
const tistory = palyerMaker("tistory")
tistory.age = 19
- argument의 타입 지정 방법 → (name:string)
- return값의 타입 지정 방법 → : Player
- playerMaker : 일반 함수형
- playerMaker2 : 화살표 함수형
5️⃣ Readonly
const numbers : readonly number[] = [1, 2, 3, 4]
// Property 'push' does not exist on type 'readonly number[]'.
numbers.push(1)
- readonly 상태에서는 Typescript가 수정못하게 막는다.
6️⃣ Tuple
- 배열처럼 여러 값을 가질 수 있다.
각각의 값이 고정된 순서와 타입을 가질 수 있도록 정의한다. - 길이가 고정된다.
- 특정 위치에 특정 타입이 있어야 한다.
const player : [string, number, boolean] = ["nico", 1, true]
player[0] = "hi"
- 길이가 3개로 고정되었고,
player[0]=string, player[1]=number, player[2]=boolean 타입이 고정되었다. - const player : readonly [string, number, boolean] = ["nico", 1, true]
readonly를 쓰면 두번째 줄에서 오류 발생한다.
* undefined, null도 설정 가능하다.
let a : undefined = undefined
let b : null = null
7️⃣ any
- Typescript로부터 빠져나오고 싶을 때 쓰는 타입
- 비어있는 값들을 쓰면 기본값이 any
- any를 쓰면 일반 JS가 되고 typescript로부터의 보호장치를 잃어버린다.
const a : any[] = [1, 2, 3, 4]
const b : any = true
a + b
8️⃣ unknown
let a : unknown;
if(typeof a === 'number') {
let b = a + 1
}
if(typeof a === "string") {
let b = a.toUpperCase();
}
- if문으로 typeof를 해주지 않으면 오류 발생
9️⃣ void
※ void : 아무것도 return하지 않는 함수
- void를 따로 지정해줄 필요 없다.
- Typescript는 이 함수가 아무것도 return하지 않는다는 것을 자동으로 인식한다.
- 원하면 써도 void 써줘도 되지만 필요하진 않다.
function hello() {
console.log('x')
}
const a = hello();
// Property 'toUpperCase' does not exist on type 'void'.
a.toUpperCase();
- return값이 없기 때문에 a.toUpperCase()와 같은 함수를 사용하면 에러가 발생한다.
🔟 never
※ never : 함수가 절대 return하지 않을 때 발생
- 예를 들면, 함수에서 exception(예외)가 발생할 때 사용
- 거의 사용하지 않는다.
function hello() : never {
return "X"
}
function hello2() : never {
throw new Error("xxx")
}
'Typescript > Lecture' 카테고리의 다른 글
[Typescript] 타입스크립트로 블록체인 만들기_Dictionary (1) | 2025.01.09 |
---|---|
[Typescript] 타입스크립트로 블록체인 만들기_(5) (0) | 2025.01.09 |
[Typescript] 타입스크립트로 블록체인 만들기_(4) (0) | 2025.01.08 |
[Typescript] 타입스크립트로 블록체인 만들기_(3) (1) | 2025.01.07 |
[Typescript] 타입스크립트로 블록체인 만들기_(1) (1) | 2025.01.06 |