타입스크립트 너란놈...
중독되면 못빠져나온다는데 난 중독 단계에 가기까지 한참 멀고 멀었다.
그래도 또 새로운거 배우니 신나는데, 머리에 집어넣을 양이 너무 많다. 허허허 24시간이 모자라
커피도 하루에 2잔~2.5잔씩 마시니까 뭔가 속이 울렁거린다. 근데 안마시면 졸려서 못견디겠다 어흑
target
: 타입스크립트 코드를 ECMAScript 버전으로 컴파일 할 때 대상으로 할 ECMAScript 버전을 지정compilerOptions
: 타입스크립트 컴파일러의 옵션을 설정include
:컴파일할 타입스크립트 파일의 경로 지정exclude
: 컴파일하지 않을 타입스크립트 파일의 경로를 지정files
: 컴파일할 타입스크립트 파일의 목록을 직접 지정extends
: 다른 tsconfig.json파일에서 설정을 상속받음references
: 프로젝트 간 종속성을 지정함.Class 클래스명 extends 부모클래스명 { }
class Base {
greet() {
console.log("Hello, world!");
}
}
class Derived extends Base {
greet(name?: string) {
if (name === undefined) {
super.greet();
} else {
console.log(`Hello, ${name.toUpperCase()}`);
} }
}
const d = new Derived();
d.greet();
d.greet("reader");
abstract
키워드를 사용함.abstract
키워드를 사용.abstract
키워드를 사용하진 않음.interface Todo {
id: number;
content: string;
completed: boolean;
}
let todos: Todo[] = [];
function addTodo(todo: Todo) {
todos = [...todos, todo];
}
const newTodo: Todo = { id: 1, content: 'typescript', completed: false }; addTodo(newTodo);
console.log(todos)
// [ { id: 1, content: 'typescript', completed: false } ]
implements
를 이용해서 구현. class 자식클래스명 implements 인터페이스명
interface UserInfo {
username: string;
password: string;
age? : number;
address?: string;
}
const userInfo: UserInfo = {
username: 'ungmo2@gmail.com',
password: '123456'
}
interface Person {
name: string;
age?: number;
}
interface Student extends Person {
grade: number;
}
const student: Student = {
name: 'Lee',
age: 20,
grade: 3
interface Person {
name: string;
age?: number;
}
interface Developer {
skills: string[];
}
interface WebDeveloper extends Person, Developer {}
const webDeveloper: WebDeveloper = {
name: 'Lee',
age: 20,
skills: ['HTML', 'CSS', 'JavaScript']
}
동일한 방법으로 선언 가능 (타입에 넣기)
동일한 방법으로 구현 가능 (implements)
확장(상속) : 둘 다 가능, 그러나 인터페이스는 선언적 확장이 가능.
type vs interface?
-> 복잡하게 확장에서 설정하겠다 --> 타입
-> (현재는 복잡하지 않지만, 추후에 속성이 추가될 수 있다.) -> Interface
class Parent {
public lastName: string = "An";
public speakKorean() { console.log(" ");
}
public eatWithChopsticks() { console.log(" ");
} }
class Child extends Parent {}
let child = new Child();
console.log(child.lastName); //안녕하세요
child.speakKorean(); //
child.eatWithChopsticks(); //젓가락으로 먹기
interface Person {
name: string;
think(): void;
walk(): void;
eat(): void;
}
class Child implements Person {
name: string = "Fomagran";
think(): void {
console.log("생각한다");
}
walk(): void {
console.log("걷는다");
}
eat(): void {
console.log("먹는다");
}
}