본문 바로가기

Typescript

[typescript 예제] 기본내용으로 문제풀어보기


배열 안에 객체 타입 선언방법

const contacts: = [
    {
      name: 'Tony',
      address: 'Malibu',
      phones: {
        home: {
          num: 11122223333,
        },
        office: {
          num: 44455556666,
        },
      },
    }
]
contact라는 배열은 안에 객체가 있고 그 객체의 타입을 지정해보았다. (아래 코드 참고)

 

interface PhoneNumberDictionary {
  [phone: string]: { //phone은 의미가 크지 않음!! 임시 변수같은 느낌
    num: number;
  };
}

interface Contact {
  name: string;
  address: string;
  phones: PhoneNumberDictionary;
}

 const contacts: Contact[] = [
    {
      name: 'Tony',
      address: 'Malibu',
      phones: {
        home: {
          num: 11122223333,
        },
        office: {
          num: 44455556666,
        },
      },
    }
  ];

 


promise 반환값 선언하는 방법

function fetchItems(): string[] {
  let items = ['a', 'b', 'c'];
  return items; 
}

const result = fetchItems();
console.log(result);





// Promise<string[]> Promise의 return값으로 들어올 값의 타입을  <> 안에 지정!
function fetchItemsPromise():Promise<string[]> {
  let items = ['a', 'b', 'c'];

  return new Promise(function (resolve) {
    resolve(items);
  })
}

 


enum을 사용하는 것과 사용하지 않는 차이

enum 사용안했을때

  findContactByPhone(phoneNumber: number, phoneType: string):Contact[] {
    return this.contacts.filter(
      contact => contact.phones[phoneType].num === phoneNumber
    );
  }
phoneType은 home, office, studio로 정해져있는데 보낼 때 오타를 낼 가능성이 있음.

 

enum 사용

enum PhoneType {
  Home = "home",
  Office = "office",
  Studio = "studio",
}

findContactByPhone(phoneNumber: number, phoneType: PhoneType):Contact[] {
  return this.contacts.filter(
  	contact => contact.phones[phoneType].num === phoneNumber
  );
}
오타로 인한 오류의 가능성을 줄일 수 있다.
실제로 보낼때는 findContactByPhone(123, PhoneType.Home) 등으로 사용하면 된다.
반응형