๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“š FrontEnd -Study/TypeScript

[typescript ํƒ€์ž…]

by ChaeLOTUS 2023. 5. 30.
728x90

1. ๊ธฐ๋ณธ ํƒ€์ž…

interface kimcoding {
  name: string;
  age: number;
}
interface parhacker {
  name: string;
  age: string;
}
function printAge(person: kimcoding | parhacker) {
  let age;
  if (typeof person.age === 'number' || typeof person.age === 'string') {
    age = person.age.toString();
  }
  console.log(`${person.name}์˜ ๋‚˜์ด๋Š” ${age}์‚ด ์ž…๋‹ˆ๋‹ค.`);
}

const kimcoding = {
  name: '๊น€์ฝ”๋”ฉ',
  age: 30,
};

const parhacker = {
  name: '๋ฐ•ํ•ด์ปค',
  age: '์„œ๋ฅธ',
};

printAge(kimcoding);
printAge(parhacker);โ€‹
/* booleanํ˜• */
let isDone: boolean = false;
let isShow: boolean = true;

console.log(isDone);
console.log(isShow);

/* ์ˆซ์žํ˜• */
let num1: number = 7;
let num2: number = 0.6878;

console.log(num1);
console.log(num2);

/* ๋ฌธ์žํ˜• */
let str: string = 'hello';

console.log(str);

/* ์ˆซ์žํ˜• ๋ฐฐ์—ด์˜ ํƒ€์ž…์„ ์ •ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• */
let list1: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];

console.log(list1);
console.log(list2);

/* ๋ฌธ์žํ˜• ๋ฐฐ์—ด์˜ ํƒ€์ž…์„ ์ •ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• */
let list3: string[] = ['banana', 'apple', 'mango'];
let list4: Array<string> = ['banana', 'apple', 'mango'];

console.log(list3);
console.log(list4);

/* ํŠœํ”Œ */
let list5: [number, string, boolean] = [1, 'banana', true];

console.log(list5);

/* ๊ฐ์ฒดํ˜• ํƒ€์ž…์„ ์ •ํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• */
let obj: object = {};
let obj2 = {
  name: 'kimcoding',
  age: 20,
  isDeveloper: true,
};

console.log(obj);
console.log(obj2);

 

2. ํ•จ์ˆ˜

/* 1-1๋ฒˆ */
function sumNumber(a:number, b:number) {
  return a + b;
}

/* 1-2๋ฒˆ */
const sumNumber2 = (a:number, b:number) => {
  return a + b;
};

/* 2๋ฒˆ */
let sumString = (first:string, last:string) => {
  return `${first} ${last}`;
};

console.log(sumString('hi', 'codestates'));

/* 3๋ฒˆ */
let sumString2 = (first:string, last?:string) => {
  return `${first} ${last}`;
};

//์•„๋ž˜ ์ฝ”๋“œ๋„ ๋™์ž‘ํ•˜๋„๋ก ๊ตฌํ˜„ํ•ด๋ด…์‹œ๋‹ค.
console.log(sumString2('hi'));

/* 4๋ฒˆ */
let printError = ():void => {
  console.log('error message');
};

 

3. ์—ฐ์‚ฐ์ž ํ™œ์šฉ ํƒ€์ž…

 

์œ ๋‹ˆ์˜จ(Union) ํƒ€์ž…

interface kimcoding {
  name: string;
  age: number;
}
interface parkhacker {
  name: string;
  age: string;
}

function printAge(person: kimcoding | parkhacker) {
  let age;
  if (typeof person.age === 'number' || typeof person.age === 'string') {
    age = person.age.toString();
  }
  console.log(`${person.name}์˜ ๋‚˜์ด๋Š” ${age}์‚ด ์ž…๋‹ˆ๋‹ค.`);
}

const kimcoding = {
  name: '๊น€์ฝ”๋”ฉ',
  age: 30,
};

const parhacker = {
  name: '๋ฐ•ํ•ด์ปค',
  age: '์„œ๋ฅธ',
};

printAge(kimcoding);
printAge(parhacker);

 

์ธํ„ฐ์„ผ์…˜(Intersection) ํƒ€์ž…

interface kimcoding {
  name: string;
  email: string;
  isAdmin: boolean;
}
interface parkhacker {
  name: string;
  email: string;
  isAdmin: boolean;
}
function sendEmail(user: kimcoding & parkhacker) {
  console.log(`์•ˆ๋…•ํ•˜์„ธ์š”, ${user.name}!`);
  if (user.isAdmin) {
    console.log(
      `
      ๊ถŒํ•œ์ด admin์ด์‹œ๊ตฐ์š”.
      ์ด๋ฉ”์ผ์€ ${user.email} ์ž…๋‹ˆ๋‹ค.
      `
    );
  } else {
    console.log(
      `
      ๊ถŒํ•œ์ด user์ด์‹œ๊ตฐ์š”.
      ์ด๋ฉ”์ผ์€ ${user.email} ์ž…๋‹ˆ๋‹ค.
      `
    );
  }
}

const kimcoding = {
  name: '๊น€์ฝ”๋”ฉ',
  email: 'kimcoding@codestates.com',
  isAdmin: false,
};

const parkhacker = {
  name: '๋ฐ•ํ•ด์ปค',
  email: 'parkhacker@codestates.com',
  isAdmin: true,
};
sendEmail(kimcoding);
sendEmail(parkhacker);

 

728x90

๋Œ“๊ธ€