웹 개발 공부

타입스크립트(TS, TypeScript) 공부 3

지금해냥 2022. 12. 4. 18:03

12. class 형 타입지정

class Person {
  name: string;
  data: number = 0;
  constructor(a: string) {
    this.name = a;
  }
  함수(a: string):void {
    console.log("안녕" + a);
  }
}

- 클래스 내부 변수 타입 지정 및 초기화 가능

- 초기값 지정은 constructor 를 이용하여 새로운 클래스 생성시 변수값 지정

- method 지정도 함수처럼 값 지정 가능

 

13. interface 문법

- 오브젝트 선언시 type방식이 아닌 interface를 통해 타입을 보다 편리하게 지정 가능

interface Square { 
  color :string, 
  width :number, 
} 

let 네모 :Square = { color : 'red', width : 100 }

- interface를 통해 대문자로 작명하고  { } 안에 타입을 명시하는 방식으로 사용

 

* interface 상속

interface Student {
  name :string,
}
interface Teacher {
  name :string,
  age :number,
}

- 다음과 같이 name이라는 키 값이 겹치는 오브젝트 일시 extends문법을 이용하여 길이를 줄일 수 있음

 

interface Student {
  name :string,
}
interface Teacher extends Student {
  age :number
}

- 객체지향적 프로그래밍 설계에 유리함

- interface로 동일 이름 중복 선언 시 허용되며 extends 한 것과 동일하게 동작

- override하는 것에 유리

- 외부 라이브러리 사용에 type지정에 편리

- 동일 키 값이 extends 되었을 때 에러처

 

* type alias의 경우 extends는 안되고 &연산자를 이용한 타입 결합 가능

type Student = {
  name :string,
}

type Teacher = Student & { age :number }

- 중복 선언 불가

- &연산 시에 동일 key 값이 존재할 때 에러처리 x (다른타입이었을 때는 에러가 나나 같은 타입이면 에러 x)

 

14. rest parameter

function 전부더하기(...a:number[]):void{
  console.log(a)
}

전부더하기(1,2,3,4,5)

- 파라미터를 풀어서 갯수가 지정되지않는 형식의 정의 용의

- 파라미터 타입지정은 배열형식으로 지정해주면 완료

 

* 비슷한 예제 Spread operator

let arr = [3,4,5];
let arr2 = [1,2, ...arr]
console.log(arr2)

- array 혹은 object 괄호 벗기고 싶을 때 왼쪽에 사용

- 괄호벗겨주는 ...spread는 array, object 자료 왼쪽에,

- 여러개의 파라미터를 의미하는 ...rest는 함수선언할 때 소괄호 안에 출몰합니다. 

 

* Destructuring 문법

let { student, age } = { student : true, age : 20 }

let [a, b] = ['안녕', 100]

- 다음과 같이 오브젝트 키 값, 배열의 값을 변수로 빼서 선언 가능

- 함수의 파라미터로도 동일하게 적용 가능

LIST