: type을 만들어내는 방식.
function hello1(person:{name: string, age: number}):void {
console.log(`안녕하세요! ${person.name} 입니다.`);
}
const p1:{name: string, age: number}={
name: "mark", age: 39,
};
interface Person1 {
name: string;
age: number;
}
function hello1(person:Person1):void {
console.log(`안녕하세요! ${person.name} 입니다.`);
}
const p1:Person1={ name: "mark", age: 39,};
type을 정의하여 사용하기 때문에 코드량이 줄고 중복으로 사용가능하게 한다.
⭐️ js 로 컴파일을 하면
interface 를 통해 type을 정의한 부분은 보이지 않는다.
interface Person2 {
name: string;
age?: number;
}
: 없어도 상관없는 프로퍼티 만들기 ( ? )
interface Person3 {
name: string;
age?: number;
[index: string]: any;
}
: 프로퍼티 네임을 넣는 자리의 type을 지정해준다.
const p32 : Person3 = {
name: "Anna",
systers: ["sung", "chan"], //[index: string] : any;
};
interface Person4 {
name: string;
age: number;
hello(): void;
}
interface IPerson1 {
name: string
age?: number;
hello(): void;
}
class Person Implements Iperson1 {
name: string;
age?: number | undefined;
constructor(name: string){
this.name = name;
}
function hello(): void {
console.log(`안녕하세요! ${this.name} 입니다.`)
}
const person: IPerson1 = new Person("Mark");
iterface IPerson2 {
name: string;
age?: number;
}
interface IKorean extends IPerson2 {
city: string;
}
const k:IKorean = {
name: "이웅재",
city: "서울",
}
interface Person8 {
name: string;
age?: number;
readonly gender: string;
}
: 읽기만 하는 프로퍼티 설정.( 타입을 설정하여 의도를 전달 한다.)
// type alias
type PersonList = stirng[];
// interface
interface IPersonList {
[index: number]: string;
}
interface ErrorHandling {
seccess: boolean;
error?: { message: string };
}
interface ArtistsData {
artists: { name: string }[];
}
// type alias
type ArtistsResponseType = ArtistsData & ErrorHandling;
// interface
interface IArtistsResponse extends ArtistsData, ErrorHandling {}
let art: ArtistsResponseType;
let iar: IArtistsResponse;
interface Bird {
fly(): void;
layEggs(): void;
}
interface Fish {
swim(): void;
layEggs(): void;
}
type PetType = Bird | Fish;
: 이름을 똑같이 만들면 자동으로 머징 된다.