WebProgramming/JS

[TS] 타입 별칭 & Interface

2022. 6. 24. 14:04
목차
  1. 타입 별칭
  2. Interfaces
  3. Optional Property
  4. 함수를 Interface 내부에
  5. Class implements
  6. 상속
  7. Readonly

타입 별칭

; Primitive, Union Type, Tuple, Function 등 직접 작성해야하는 타입을 다른 이름으로 지정 가능

// primitive타입 별칭
type MyStringType=string;
let myStr:MyStringType='hello';

// Union 타입 별칭
type StringOrNumber=string|number;
let another:StringOrNumber='Anna';

// Tuple 타입 별칭
type A=[number,number];
let b:A=[1,2];

// Function 타입 별칭
type EatType=(food:string) => void;

 

 

Interfaces

; 하나의 타입을 만들어내는 방식

- 컴파일 시 사라짐(js파일에는 존재 x). 컴파일할 때만 필요함.

interface A{      
    a:a_type;
    b:b_type;
}
const B : A = {
    a:a',
    b:b',
};

 

 

Optional Property

1. 상황에 따라 있을 수 있고 없을 수 있는 속성

 

interface A{
    a:a_type;
    b?:b_type; // Optional Property
}

2. 새로운 속성을 알아서 생성 가능 ( [index:type]:any; )

interface A{
    a:a_type;
    b?:b_type;
    [index:c_string]:any; 	//어떤 속성이든 가능
}
const A':A={
    a:a',
    d:[d',d'],
};
const A'':A={
    a:a',
    e:e'',
    f:f'',
};
// d,e,f는 모두 string형

 

함수를 Interface 내부에

interface A {
  a:a_type;
  b:b_type;
  c(): void;
}

const A':A={
  a:a',
  b:b',
  c:function():void{	
    console.log(`안녕하세요 제 이름은 ${this.a}입니다.`);
  },
};

const A'':A={
  a:a'',
  b:b'',
  c():void{					// function키워드 생략
    console.log(`안녕하세요 제 이름은 ${this.a}입니다.`);
  },
};

const A''':A={
  a:a''',
  b:b''',
  c:(this:A):void => {   
// 화살표 함수 내에서 화살표 함수 내에서 객체를 찾음 -> 없기 때문에 global this를 가리킴 => 사용 불가
    console.log(`안녕하세요 제 이름은 ${this.a}입니다.`);
  },
};

 

Class implements

class Class명 implements Interface명{

   Interface 속성들 선언 (ex name:string )

}

interface A{
    a:a_type;
    b?:b_type;
    c():void;
}

class B implements A{
    a:a_type;
    b?: b_type | undefined;

    constructor(a:a_type, b?:b_type | undefined){   // name에 기본값을 할당해주어야함
        this.a=a;
        this.b=b;
    }

    c(): void {
        console.log(`안녕하세요! ${this.a} 입니다.`);
    }
    
}

const A':A = new B(a',b');

 

상속

; extends 사용

interface A{
    a:a_type;
    b?:b_type
}

interface B extends A{ // B는 A를 상속
    c:c_type;
}

const B':B={
    a:a',
    b:b',
    c:c',
};

 

 

Readonly

interface Person8{
    name:string;
    age?:number;
    readonly gender:string;
}

const p81:Person8={
    name:'Mark',
    gender:"male",
};

p81.gender="female"; // 오류발생(gender는 readonly형이므로)

 

저작자표시 (새창열림)

'WebProgramming > JS' 카테고리의 다른 글

[JavaScript] Computed Property  (0) 2022.07.26
[JavaScript] Object Methods(assign,keys,values,entries,fromEntries)  (0) 2022.07.26
[JS] Array 메소드 (map,filter,reduce,find,concat,slice)  (0) 2022.07.15
[JS] JS 라이브러리 (lodash, axios)  (0) 2022.06.30
[TS] TS의 타입 시스템? & Compliation Context  (0) 2022.06.12
[TS] TypeSCript이란? & 타입  (0) 2022.06.12
[JS] JSON  (0) 2022.06.11
[JS] 정규표현식  (0) 2022.06.11
  1. 타입 별칭
  2. Interfaces
  3. Optional Property
  4. 함수를 Interface 내부에
  5. Class implements
  6. 상속
  7. Readonly
'WebProgramming/JS' 카테고리의 다른 글
  • [JS] Array 메소드 (map,filter,reduce,find,concat,slice)
  • [JS] JS 라이브러리 (lodash, axios)
  • [TS] TS의 타입 시스템? & Compliation Context
  • [TS] TypeSCript이란? & 타입
피터s
피터s
1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터s
피터의 성장기록
피터s
전체
오늘
어제
  • 분류 전체보기 (200)
    • 코딩 테스트 (25)
      • 프로그래머스 (16)
      • LeetCode (8)
      • 백준 (1)
    • 개발 독서 일지 (1)
    • 기업 분석 (4)
    • 개발 일지 (19)
      • 최신기술 도전기 (1)
      • 에러 처리 (5)
      • 개발 일지 (12)
    • 개발 일상 (36)
      • 개발 회고 (22)
      • 개발 이야기 (12)
      • 개발 서적 (1)
    • 취업 관련 지식 (11)
    • 알고리즘 (17)
    • WebProgramming (84)
      • WebProgramming (8)
      • HTML (5)
      • CSS (8)
      • JS (21)
      • React (40)

블로그 메뉴

  • About
  • 2022년 개발 성장기
  • 앞으로의 계획
  • github
  • 일상 blog

공지사항

인기 글

태그

  • 개발 일상
  • 구름
  • Union-find
  • 개발 회고
  • LV2
  • lv3
  • 구름톤
  • dfs
  • 함수
  • Kakao Tech Internship
  • Retry
  • 카카오 채용연계형 인턴십
  • 카카오
  • 누적합
  • 개발 is life
  • 반복문
  • 스터디 후기
  • KAKAO BLIND
  • 해커톤
  • 1일 1커밋 후기
  • 1년 회고
  • BFS

최근 댓글

최근 글

hELLO · Designed By 정상우.
피터s
[TS] 타입 별칭 & Interface
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.