왜? 만들어졌는가
왜? 만들어졌는가
-> 런타임 에러(콘솔에서 일어나는 에러)가 줄어든다
-> JS는 코드 실행 에러가 날거라고 얘기해주지 않음
자바스크립트는 유연한 언어
-> 에러를 보여주지 않으려고 함
[1, 2, 3, 4] + false // ‘1, 2, 3, 4,false’
함수의 인수의 개수와 인수의 데이터 타입도 확인해줌
- 타입스크립트 동작
TS -> 컴파일 -> JS
컴파일 되기 전 에러가 예상되는 코드가 발견되면 컴파일이 진행되지 않음
- 타입 추론
- 명시적 표현
데이터와 변수의 타입을 명시적으로 정의 가능
명시적 표현은 최소한으로 사용하는 것이 좋음(코드를 많이 쳐야하기 때문에)- 타입 추론
그냥 변수만 선언도 가능
const player : {
name: string,
age: number,
} = {
name: 'chan',
age: 19
}
// type alias
type Age = number
type Name = string
type Player = {
name: Name,
age?: Age
}
function playerMaker(name:string) : Player {
return {
name
}
}
화살표 함수일 때
const playerMaker = (name:string) : Player => ({name})
readonly
- 수정 불가능, 읽는 것만 가능!
type Age = number type Name = string type Player = { readonly name: Name, age?: Age } const playerMaker = (name:string) :Player => ({name}) const chan = playerMaker('zerone')
const countNum : readonly number[] = [1, 2, 3, 4]
countNum.push(1) // error
### Tuple과 undefined, null, any
```ts
// array 생성, 최소한의 길이를 가져야하고 특정위치에 특정 타입이 있어야함!
// 활용: API가 return하는 값으로 특정한 배열을 줄 수 있음
const player : readonly [string, number, boolean] = ['zerone', 2, true]
player[0] = "hi"
// undefined, null, any
let a: undefined = undefined
let b: null = null
let c = [] // any 타입 - 아무 타입이나 될 수 있음, 타스에 보호장치로부터 제외할 수 있음
- void: 아무것도 return하지 않는 함수를 대상으로 사용, return 값을 따로 지정하지 않은 함수는 void를 반환함(void는 empty를 의미)
- unknown: 변수의 타입을 미리 알지 못할 때 unkown을 통해 추가적으로 강제적인 확인 작업을 거친다.
- never: 함수가 절대 return 않을 때 발생함, return하지 않고 오류를 발생시키는 함수를 만들 때 사용
let a: unknown
if(typeof a === 'number') {
let b = a + 1
}
function hello() {
console.log('x')
}
// return 하지 않고 오류를 발생시키는 함수
function bye():never {
throw new Error("error!")
}
function say(name:string|number) {
if(typeof name === "string") {
name // 타입: stirng
} else if (typeof name === "number") {
name // 타입: number
} else {
name // 타입 never, 에러가 나면 실행됨
}
}
노마드 코더 타입스크립트로 블록체인 만들기 강좌