06/19-1

Posted by:

|

On:

|

typescript 클래스

readonly : 접근만 가능. 즉, 수정이 불가능하다.

예시

class A{readonly name:string;}이고 const B=new A();라고 정해줄 때 B.name='def'를 쓰면 name부분에 빨간색 물결줄이 생기면서 문제 창에 읽기 전용 속성이므로 ‘name’에 할당 할 수 없습니다. 라고 나온다

Accessor : get과 set을 이용해서 get으로 지정한 값을 가져오고 set으로 get으로 가져온 값을 사용한다. 대신 get와 set을 쓸 때 지정한 변수명을 쓸 수는 없다. 접근은 .속성이름 으로 접근한다

예시

class MyTypeClass { private name:string=""; get getname():string { return this.name;} set setname(newValue:string) {this.name=newValue;}}
const mytypeclass = new MyTypeClass();
mytypeclass.setname="green";

이며 console.log(mytypeclass)를 출력해보면 name에 green 문자가 들어가 있는 것을 확인 할 수 있다. 이 때 mytypeclass.name을 찾을수 없다고 나오는데 이유는 name에 private를 붙임으로써 class 내에서만 사용이 가능해서 밖에서 쓸 수 없다. 그래서 get(읽기 접근) 과 set(쓰기 접근) 을 쓴 것이다. 만약 set을 쓰지 않는다면 읽기 접근만 있는 readonly와 같아진다.

abstract class(추상 클래스) : 특정 클래스의 상속 대상이 되는 클래스이며 좀 더 상위 레벨에서 속성, 메서드의 모양을 정의한다. 간단하게 생각하면 전체는 아니지만 한 부분이라도 비여있게 표시는 가능하나. 상속해주는 곳에서 완전히 설정해줘야 작동하는 클래스. 즉, 추상클래스 자체로는 쓸 수 없다.

예시

abstract class 이름{ abstract 함수명():void}-대부분 실행할 내용을 뺀 모양이다.

class 다른이름 extends 추상클래스이름{함수명():void {실행할 내용}}와 같이 나머지를 채운 형태를 쓴다.

제너릭(generics) : 타입을 함수의 파라미터처럼 사용함

예시

function getText<T>(text:T):T{return text;}라고 작성하고 getText<string>("hi");이면 function getText<string>(text:string):string{return text;}처럼 인식한다

사용하는 이유는 함수의 인자로 어떤 타입이 들어갔고 어떤 값이 반환되는지 알 수 없기 때문(any가 대표적인 예시)

클래스로도 붙일 수 있다

예시

class GenericMath<T>{ pi:T; sum:(x:T,y:T)=>T;}

일 때 const math= new GenericMath<number>();와 같이 쓸 수 있다. 이 때 math의 class는 GenericMath<number>{pi:number; sum:(x:number,y:number)=>number;}가 된다.