JiSoo's Devlog
[타입스크립트로 블록체인 만들기] Overview of Typescript 본문
타입스크립트는 자바스크립트 기반으로 만들어진 언어
타입 안정성이 가장 큰 장점
strongly typed(강타입) 프로그래밍 언어
타입스크립트는 작성한 코드가 자바스크립트로 변환된다
타입 시스템
- 명시적 정의(변수 선언 시 타입 정의) -> Type Checker에게 타입을 추론하는 것을 허용
let a : boolean = true
let b : number[] = []
b.push(1)
- 변수만 생성
let a = "hello"
optional
const player : {
name: string,
age?:number
} = {
name: "jisoo"
}
player.age가 undefined일 가능성 체크 ↓
if(player.age && player.age < 10) {
}
: 앞에 ? 붙이면 optional parameter 지정 가능
Alias 타입
객체 타입뿐만 아니라 모든 타입에 이름 지정 가능
type Age = number;
type Name = string;
type Player = {
name: Name,
age?: Age
}
const jisoo : Player = {
name: "jisoo"
}
const lynn : Player = {
name: "lynn",
age: 12
}
함수에서는
type Player = {
name: string,
age?:number
}
function playerMaker1(name:string) : Player {
return {
name
}
}
const playerMaker2 = (name:string) : Player => ({name})
const nico = playerMaker1("nico")
nico.age = 12
name:string 처럼 argument에 타입 지정
함수 return값의 타입 지정하려면 : Player 부분처럼! 콜론 뒤에 타입
{name} 이건 object를 리턴한다는 뜻
: 타입
readonly 속성을 타입에 추가 가능
type Player = {
readonly name:string
age?:number
}
const playerMaker = (name: string): Player => ({name})
const nico = playerMaker("nico")
🚫 nico.name = "aa"
const numbers: readonly number[] = [1, 2, 3, 4]
🚫 numbers.push(1)
readonly가 있으면 최초 선언 후 수정 불가
Tuple은 정해진 갯수와 순서에 따라 배열 지정 가능
readonly도 사용 가능 -> readonly[...] 형태
const player: [string, number, boolean] = ["nico", 1, true]
any는 타입스크립트로부터 빠져나오고 싶을 때 쓰는 타입, 아무 타입
보호장치 비활성화 -> 좋은 방식 X
undefined는 선언 X 할당 X
null은 선언 O 할당 X
unknown은 변수의 타입을 미리 알지 못 할 때 사용
let a:unknown
if(typeof a === 'number'){
let b = a + 1
}
if(typeof a === 'string'){
let b = a.toUpperCase()
}
🚫 let b = a + 1
void는 아무것도 return 하지 않는 함수 -> 따로 지정할 필요 X
함수가 작업을 완료하고 반환할 필요가 없음을 나타낸다
콘솔에 메시지를 출력하거나 파일에 쓰기 등의 일 수행 가능
function hello() {
console.log('x')
}
const a = hello()
🚫 a.toUpperCase()
never은 함수가 반환하지 않는 다는 것을 나타낸다
런타임 오류를 throw하거나 무한루프에 빠지는 등의 예외적인 상황에서 사용
반환값이 없는 게 아니라 함수가 반환되지 않는다는 것을 나타내는 반환 유형
function hello():never {
throw new Error("zzz")
🚫return "a"
}
function temp(name:string|number):never {
if(typeof name === "string"){
name
} else if(typeof name === "number"){
name
} else {
name
}
}
인자가 제대로 전달되었다면 else로 올 수 없다
-> void는 함수가 작업을 수행하고 반환하지만 반환값이 없는 경우 사용되고 never은 함수가 반환되지 않는 경우 사용된다
'Frontend > Typescript' 카테고리의 다른 글
[Udemy React 완벽 가이드] 리액트 + TypeScript (1) | 2024.06.04 |
---|---|
[타입스크립트로 블록체인 만들기] Typescript Blockchain (0) | 2024.04.20 |
[타입스크립트로 블록체인 만들기] Classes and interfaces (0) | 2024.04.17 |
[타입스크립트로 블록체인 만들기] Functions (0) | 2024.03.31 |