230112 - TIL

Junho Yun·2023년 1월 12일
0

TIL

목록 보기
55/81
post-thumbnail

객체 타입

객체 타입에 적용하는 typescript

function printName(person: { first: string; last: string }): void {
  console.log(`${person.first} ${person.last}`);
}

printName({ first: "Thomas", last: "Jenkins" });

printName 이라는 함수는 person을 매개변수로 받습니다. 이는 객체이며, first(키)에는 string 값을, last(키)에는 string 값을 각각 할당해서 받습니다. return되는 값은 void로 없습니다.

타입 alias

여러개의 타입을 지정해줘야할 때, 코드가 불필요하게 길어지는 경우가 있습니다
그럴 때 타입부분만 따로 선언 및 할당을 해주고, 그렇게 선언된 타입변수를 활용해서 어노테이션하는 방법입니다.

타입을 선언해줄 때는 첫글자를 대문자로 선언해줘야합니다.

type Song = {
  title: string;
  artist: string;
  numStreams: number;
  credits: { producer: string; writer: string };
};

function calculatePayout(song: Song): number {
  return song.numStreams * 0.0033;
}

선택적 프로퍼티

type Point = {
  x: number;
  y: number;
  z?: number;
};

z의 경우 선택적 프로퍼티로 선언 했습니다. 필수는 아니라는 것을 의미합니다.
z가 없어도 됩니다.

readonly 제어자

type User = {
  readonly id: number; // readonly 제어자 
  username: string;
};

const user: User = {
  id: 12837,
  username: "catgurl",
};

console.log(user.id);
user.id = 1234 // 여기서 에러 발생, 새롭게 할당이 불가능합니다. 

교차 타입

type Cat = {
  numLives: number;
};
type Dog = {
  breed: string;
};

type CatDog = Cat &
  Dog & {
    age: number;
  };

const christy: CatDog = {
  numLives: 7,
  breed: "Husky",
  age: 9,
};

&(엔퍼센트)를 통해 묶어서 어노테이션을 줄 수 있습니다.

배열 타입

// String array
const activeUsers: string[] = [];
activeUsers.push("Tony");

// Array of numbers
const ageList: number[] = [45, 56, 13];
ageList[0] = 99;

// Alternate Syntax:
// const bools: Array<boolean> = []
const bools: boolean[] = [];

type Point = {
  x: number;
  y: number;
};

const coords: Point[] = [];
coords.push({ x: 23, y: 8 });

// Multi-dimensional string array
const board: string[][] = [
  ["X", "O", "X"],
  ["X", "O", "X"],
  ["X", "O", "X"],
];
profile
의미 없는 코드는 없다.

0개의 댓글