학습하기 위해서 정리하는 것이기 때문에 빈 개념들이 있을 수 있습니다.
타입 적용 방법
타입 종류 - number, string, unknown, any, [], {}, interface 등 / 클래스의 타입(ex. blob, file, htmlElement, 등)
타입 추론 - 파라미터 기본값 설정, 변수 초기화, 함수 반환 값
타입 단언 - as, ! (Non-null) / 단언이 잘못 되면 에러 발생
타입 가드 - 조건문을 통해서 값이 null, undefined, 등이 나오지 않도록 처리 / typeof, instanceof 등 사용
인터페이스
호출 시그니처
interface getCount {
(items: string[]): number
}
화살표 함수 사용
interface IUser {
name: string
getAge: (birth: Date) => number
}
인덱스 시그니처
interface IProject {
[ key: string ]: string
}
interface 상속
interface IPerson {
name: string,
gender: string,
age: number,
}
interface ITeacher extends IPerson {
subject: string,
year: number
}
함수 타입 오버로딩
function add(a: string, b: string): string
function add(a: number, b: number): number
function add(a: any, b: any) {
return a + b
}
this 명시적 바인딩 시 타입
interface IPerson {
name: string,
gender: "남성" | "여성",
age: number
}
// this에 타입 지정
function getWelcome(this: IPerson) {
console.log(`${this.name}님, 안녕하세요.`)
}
const user1: IPerson = {
name: "유자차",
gender: "남성",
age: 20
}
// this 명시적 바인딩
getWelcome.call(user1)
클래스 접근 제어자
// 접근 제어자 public, protected, private
type TGender = "남자" | "여자" | "" = ""
class Person {
public name: string = ""
public gender: TGender = ""
public age: number = 0
constructor(name: string, gender: TGender, age: number) {
this.name = name
this.gender = gender
this.age = age
}
getWelcome() {
return `${this.name}님, 안녕하세요.`
}
}
위와 동일하지만 간결한 코드
// 접근 제어자 public, protected, private
type TGender = "남자" | "여자" | "" = ""
class Person {
constructor(
public name: string = "",
public gender: TGender = "",
public age: number = 0
) {}
...
}
제네릭 사용
// 함수 오버로딩 대신에 제네릭 사용, 클래스도 가능
function sumTwo<T>(a: T, b: T) {
return a + b
}
sumTwo<string>("안", "녕") // 안녕
sumTwo<number>(1, 2) // 3
인터페이스 제약 조건
// T 자리에 string | number 만 가능하도록 설정
interface IProject<T extends string | number> {
title: string
content: string
value: T
}
'Language > - JS & TS' 카테고리의 다른 글
Three.js 개념 및 기본 사용법 정리 (0) | 2023.08.13 |
---|---|
자바스크립트 기본 지식 정리 (0) | 2023.07.26 |
자바스크립트 화살표 함수 정리 (0) | 2023.07.21 |
자바스크립트의 this 이해하기 (0) | 2023.07.17 |
자바스크립트 암묵적 타입 변환 (0) | 2022.05.25 |
댓글