type Person = {
name: string,
age:number
}
type Student = Person & {
school: string
}
const maru:Student = {
name:'maru'
age:8
school:'tdc'
}
선언적 확장
interface
선언적 확장이 가능하다
같은 이름의 interface를 선언하면 자동으로 확장된다.
interface Person {
name:string,
age:number
}
interface Person {
gender:string
}
const maru: Person = {
name:'maru',
age:8,
gender: 'male'
}
type
선언적 확장이 불가능
type Person = {
name:string,
age: number
}
type Person = { //Error
gender: string;
}
타입 객체의 확장성을 위해서는 interface를 사용하는 것이 더 좋다.
자료형(type)
interface
객체(Object)의 타입을 설정할 때 사용할 수 있으며, 원시 자료형에는 사용할 수 없다.
interface Person {
name:string;
age:number;
gender:string;
}
// 원시타입 확장 에러
interface name extends string {
}
type
객체 타입을 정의할 때도 사용할 수 있지만 객체타입을 정의할 때는interface를 사용하는게 좋고,
단순한 원시값(Primivite type)이나 튜플(Tuple), 유니언(Union)타입을 선언할때type을 사용하는 것이 좋다.
type name = string;
type Age = number;
type Person = [string, number, booleann] // tuple
type NumberString = string|number // union
// 객체는 interface
type Person = {
name: string;
age:number;
gender:string
}
computed value 사용
interface
computed value 사용이 불가능
type Subjects = 'math'|'science'|'sociology'
//Error
interface Grades {
[key in Subjects] :string
}
type
computed value 사용이 가능
type Subjects = 'math'|'science'|'sociology'
type Grades = {
[key in Subjects] :string
}
type 은 모든타입 선언할 때 사용할 수 있고
interface 는 객체에 대한 타입을 선언할 때만 사용할 수 있다.
확장 불가능한 타입을 선언하고 싶다면 type을 사용
확장 가능한 타입을 선언하고 싶다면 interface를 사용하면 된다.
타입스크립트를 사용하는 이유
TypeScript란?
Javascript의 슈퍼 셋. 상위 확장자로 Javascript 엔진을 사용하며 자신이 원하는 변수의 타입을 정의하고 프로그램밍 하면 Javascript로 컴파일 되어 실행할 수 있다.
TypeScript 장점
typescript는 javascript의 슈퍼셋 이다.
TypeScript vs Javascript
Type과 Interface의 차이점
확장(상속)
interface
extends 키워드를 이용해 확장
type
& 기호 사용 확장
선언적 확장
interface
선언적 확장이 가능하다 같은 이름의 interface를 선언하면 자동으로 확장된다.
type
선언적 확장이 불가능
타입 객체의 확장성을 위해서는 interface를 사용하는 것이 더 좋다.
자료형(type)
interface
객체(Object)의 타입을 설정할 때 사용할 수 있으며, 원시 자료형에는 사용할 수 없다.
type
객체 타입을 정의할 때도 사용할 수 있지만 객체타입을 정의할 때는
interface
를 사용하는게 좋고, 단순한 원시값(Primivite type)이나 튜플(Tuple), 유니언(Union)타입을 선언할때type
을 사용하는 것이 좋다.computed value 사용
interface
computed value 사용이
불가능
type
computed value 사용이
가능
type
은모든타입 선언
할 때 사용할 수 있고interface
는객체
에 대한 타입을 선언할 때만 사용할 수 있다.확장 불가능한 타입
을 선언하고 싶다면type
을 사용확장 가능한 타입
을 선언하고 싶다면interface
를 사용하면 된다.