클래스 활용
클래스를 JavaScript 통해 정의하는 경우 생성자를 사용하여 초기화를 하는 경우 프로퍼티를 작성하지 않아도 됨
생성자를 통해 초기화만 하면 프로퍼티 사용 가능
TypeScript에서 클래스를 사용하는 경우 접근 제어자 사용 가능(java에서 사용하는 접근 제어자와 유사함)
예시 코드
// 클래스에 추가적으로 프로퍼티를 정의하지 않아도 생성자로 받은 id, task, complete
// 프로퍼티는 접근 가능함
class TodoItem {
constructor(id, task, complete) {
this.id = id
this.task = task
this.complete = complete
}
}
// TypeScript에서는 클래스를 정의하는 경우 접근 제어자 사용 가능
class TodoItem {
public id: number
public task: string
public complete: boolean
constructor(id: number, task: string, complete: boolean) {
this.id = id
this.task = task
this.complete = complete
}
}
// TypeScript에서는 JavaScript 예시처럼 사용하면서 접근 제어자 사용 가능
class TodoItem {
constructor(public id: number, public task: string, public complete: boolean) {
this.id = id
this.task = task
this.complete = complete
}
}
타입 지정 활용
Java 처럼 변수에 타입을 지정할 수 있음
변수에 타입을 지정하면 해당 변수에 다른 값을 대입할 수 없음
객체 리터럴에 대한 타입 정의는 해당 리터럴 객체가 갖는 각각의 프로퍼티에 대한 타입을 정의하는 형태
예시 코드
// 원시 타입
const name: string = 'Kim'
const age: number = 20
const hasName: boolean = true
const nullValue: null = null
const nothing: undefined = undefined
// 클래스
const now: Date = new Date()
// 배열
const colors: string[] = ['red', 'yellow', 'blue']
const numbers: number[] = [1, 2, 3, 4, 5]
// 리터럴에서의 타입 지정
const point: { x: number, y: number } = {
x: 10,
y: 20
}
// 함수에서의 타입 지정
// 선언적 함수
function add(n1: number, n2: number): number {
return n1 + n2
}
// 익명 함수
const add = function(n1: number, n2: number): number {
return n1 + n2
}
// 람다 함수
// 먼저 함수 시그니처를 작성하고 이후 실제 사용되는 함수 정의
const add = (n1: number, n2: number): number => {
return n1 + n2
}
가변 인자 활용
JavaScript에서는 별다른 설정 없이 가변 인자를 활용할 수 있었음
하지만 TypeScript에서는 다른 타입의 인자를 받아올 수 없게 되어 있음
만약 TypeScript에서 가변 인자를 활용하려는 경우 함수 오버로딩을 통해 활용
선택적 매개변수는 함수 호출시 전달 인자를 선택적으로 보낼 수 있는 기능
이외에 ES6를 활용하면 기본 매개변수(Default Parameter), 나머지 매개변수(Rest Parameter)사용 가능
예시 코드
function add(firstParam: string, secondParam: string): string;
function add(firstParam: number, secondParam: number): number;
function add(firstParam: any, secondParam: any): any {
console.log(firstParam + secondParam)
}
// 선택적 매개변수
// ?를 사용한 thirdParam은 생략이 가능한 매개변수(즉 있어도 없어도 되는 매개변수)
function add(firstParam: number, secondParam: number, thirdParam?: number): number
// 기본 매개변수
// secondParam의 경우 넘어오지 않는 경우 기본값 2로 함수 진행
function add(firstParam: number, secondParam: number = 2): number
// 나머지 매개변수
// 매개변수를 배열로 받을 수 있는 방법
function add(...numbers: number[]): number