[TypeScript] TypeScript (1)

Hyowmls·2024년 6월 25일
1
post-thumbnail
post-custom-banner

tsc

Typescript의 컴파일러

  • 소스코드의 정적 타입 검사를 수행함
    이를 통해 타입 관련 오류를 미리 발견하고 수정할 수 있다
  • TypeScript 코드를 JavaScript 코드로 변환한다
  • 코드의 최적화를 도와준다
    코드가 최적화가 되면 전반적인 어플리케이션 실행시간이 빨라진다

d.ts

TypeScript 타입 정의 파일

  • JS 라이브러리에 대한 타입 정보를 제공한다

@types 라이브러리

외부 라이브러리에 대한 타입 정보를 제공한다

Type 종류

boolean

true, false

  • 2가지의 상태( 켜짐/꺼짐, 유효함/유효하지 않음 등)를 표현하고 싶은경우에 사용
    ❗️3가지 이상의 상태를 표현하고 싶은 경우 enum, string을 사용해야 한다

예시코드

function isValid(password : string) : boolean {
	return password.length >= 8
}
const password = "qwer1234"
const valid = isValid(password)

if(valid) {
	console.log("유효한 패스워드입니다")
} else {
	console.log("유효하지 않은 패스워드입니다")
}

number

모든 숫자 데이터를 의미한다


예시코드

function calArea(radius : number) : number {
	return Math.PI * radius * radius
}
const radius = 5
const area = calArea(radius)
console.log(`반지름 길이 : ${radius}, 원의 넓이 ${area}`)

string

텍스트 데이터를 나타낸다


예시코드

function greet(name : string) : string {
	return `${name}님 안녕하세요 !`
}
const name = "홍길동"
const greeting = greet(name)

배열

기본타입에 [ ] 가 붙은 형태의 타입을 의미한다


예시코드

function calSum(numbers : number[]) : number {
	let sum: number = 0
    for (let i =0; i < numbers.length; i++) {
    	sum += numbers[i]
    }
    return sum
}
const scores : number[] = [90,10,50,40]
const sumScores = calSum(scores)

튜플(tuple)

서로 다른 타입의 원소를 순서에 맞게 가질 수 있는 특수한 형태의 배열이다


예시코드

const person: [string, number, boolean] = ['홍길동', 30, false]
const person2: [string, number, boolean] = [30, "홍길동", false] // Error

타입의 순서에 맞게 값을 넣어야 한다

enum

다양한 상수를 보다 더 이해하기 쉬운 문자열 이름으로 접근하고 사용할 수 있게한다

  • enum 안에 있는 각 요소는 값이 설정되어 있지 않으면 기본적으로 숫자 0으로 시작한다
  • enum 안에 있는 요소에는 number 또는 string 타입의 값만 할당할 수 있다
    ❗️enum은 명확하게 관련된 상수 값들을 그룹화하고자 할 때 사용하는것이 좋다

readonly

TypeScript에서 객체의 속성을 불변으로 만다는데 사용된다


예시코드

class Person {
	readonly name : string
    readonly age : number
    
    constructor(name : string, age : number) {
    	this.name = name
        this.age = age
    }
}
const person = new Person("홍길동", 30)
console.log(person.name) // 홍길동
console.log(person.age) // 30
person.name = "김길동" // Error : name은 readonly 속성이므로 재할당이 불가능하다

any & unknown

any

어떤 타입의 값이든 저장할 수 있다

  • 코드의 안정성과 유지 보수성을 저해할 수 있다

예시코드

let anything : any
anything = 5
anything = "Hello"
anything = { id : 1, name : "John" }

unknown

any 타입과 비슷한 역할을 하지만 더 안전한 방식으로 동작한다

  • 모든 타입의 값을 저장할 수 있다. 하지만 그 값을 다른 타입의 변수에 할당하려면 명시적으로 타입을 확인해야 한다

예시코드

let unknownValue : unknown = "Hello"
let stringValue : string
stringValue = unknownValue as string
console.log(stringValue) // Hello

union

여러 타입 중 하나를 가질 수 있는 변수를 선언할 때 사용한다


예시코드

type StringOrNumber = string | number

function processValue(value: StringOrNumber) {
	if (typeof value === 'string') {
    	console.log('string value')    // value는 여기서 string 타입으로 간주됨
    } else if (typeof value === 'number') {
    	console.log('number value')    // value는 여기서 number 타입으로 간주됨
    }
}
processValue('Hello')
processValue(40)
post-custom-banner

0개의 댓글