✨ 클래스 확장 클래스 역시 extends 키워드를 사용하여 확장할 수 있습니다. class Teacher { teach() { console.log("teach") } } class StudentTeacher extends Teacher { learn() { console.log("learn") } } 할당 가능성 확장 파생된 인스턴스는 기본 클래스 또는 하위 클래스를 충족하는데 사용할 수 있습니다. class Lesson { subject: string constructor(subject: string){ this.subject = subject; } } class OnlineLesson extends Lesson { url: string; constructor(subject: string, url:..
✨ 클래스 메서드 class Greeter { message: string constructor(message: string){ this.message = message; } greet(name: string){ console.log(`${this.message} ${name}`) } } new Greeter("hi").greet("Jack") // OK new Greeter().greet("Jack") // ERROR Expected 1 arguments, but got 0. new Greeter("hi").greet() // ERROR Expected 1 arguments, but got 0. ✨ 클래스 속성 클래스 속성을 읽거나 쓰려면 명시적으로 선언해야 합니다. 인스턴스에 존재하지 않는 멤버에 접..
✨타입 별칭 vs 인터페이스 인터페이스는 병합(merge)할 수 있습니다. 내장된 전역 인터페이스 혹은 외부 코드를 사용할 때 유용합니다. 인터페이스는 클래스가 선언된 구조의 타입을 확인하는 데 사용할 수 있지만, 타입 별칭은 그럴 수 없습니다. 일반적으로 인터페이스가 더 빨리 작동합니다. ✨속성 타입 선택적 속성 interface Poet{ born?: number; // ? 키워드로 선택적 속성 사용 name: string; }; 읽기 전용 속성 interface Poet{ readonly born: number; // readonly 키워드를 이용하여 다른 값으로 설정할 수 없음을 나타냅니다. name: string; }; const poet: Poet = { born: 1980, name: "AB..
✨ 배열 타입 배열과 함수 타입 let createStrings : () => string[]; // 문자열로 구성된 배열을 반환하는 함수 let stringCreators : (() => string)[]; // 함수의 배열 유니언 타입 배열 let stringOrArrayOfNumbers: string | number[]; // 문자열이거나, 값이 숫자인 배열 let arrayOfStringsOrNumbers: (string | number)[]; // 값이 문자열, 숫자인 배열 any 배열의 진화 any타입을 허용하거나, 일반적으로 사용하면 타입 검사 목적을 부분적으로 무효화합니다. const arr = []; // const arr: any[] arr.push('') // const arr: st..
✨함수 매개변수 필수 매개변수 function singTwo(first: string, second: string){ console.log(`${first} ${second}`) } // 이 함수의 매개변수는 2개 이다. // 1개 혹은 3개의 매개변수는 허용하지 않는다. singTwo("a") // ERROR Expected 2 arguments, but got 1. singTwo("a","b") // OK singTwo("a","b","c") // ERROR Expected 2 arguments, but got 3. 선택적 매개변수 타입 애너테이션의 : 앞에 ? 를 추가해 선택적으로 사용할 수 있습니다. function singTwo(first: string, second?: string){ cons..
✨ 객체 타입 객체 타입 선언 let poetLater: { born: number; name: string; } poetLater = { born: 1935, name: 'Mary Oliver' } poetLater = 2 // [ERROR] Type 'number' is not assignable to type '{ born: number; name: string; }'. 별칭 객체 타입 type 키워드를 사용하여 객체 별칭을 할당해 사용할 수 있습니다. 대부분의 타입스크립트 프로젝트 에서는 인터페이스(interface) 키워드를 사용하는 것을 선호합니다. type poetLater = { born: number; name: string; } const poetLater: poetLater = { b..