<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>갈푸라떼는 개발중</title>
    <link>https://latte1114.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 4 Aug 2026 01:44:00 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>갈푸라떼</managingEditor>
    <image>
      <title>갈푸라떼는 개발중</title>
      <url>https://tistory1.daumcdn.net/tistory/4980735/attach/55385a500fbb46308d1feff98df07082</url>
      <link>https://latte1114.tistory.com</link>
    </image>
    <item>
      <title>[Typescript] Class 객체 지향 코드</title>
      <link>https://latte1114.tistory.com/686</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;타입스크립트에서는 파라미터에 써주기만해도 Typescript가 알아서 Constructor함수를 만들어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 아래는 이해를 돕기위한 예시 사진&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-07 오후 7.43.06.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFJEcK/btrN3T6JRWj/I2EHOGQ5cbKueTEFwonFE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFJEcK/btrN3T6JRWj/I2EHOGQ5cbKueTEFwonFE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFJEcK/btrN3T6JRWj/I2EHOGQ5cbKueTEFwonFE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFJEcK%2FbtrN3T6JRWj%2FI2EHOGQ5cbKueTEFwonFE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1576&quot; height=&quot;538&quot; data-filename=&quot;스크린샷 2022-10-07 오후 7.43.06.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입스크립트와 객체지향 프로그램이 가지고 있는 &lt;b&gt;추상클래스(Abstract Class)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 추상클래스란? 다른 클래스가 상속 받을 수 있는 클래스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이 추상클래스는 직접 새로운 인스턴스를 만들 수는 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) new User()를 이용해 새로운 인스턴스를 만들려고 하면 error가 발생할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-07 오후 7.55.42.png&quot; data-origin-width=&quot;1594&quot; data-origin-height=&quot;692&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GvyHc/btrN29iuWC5/egmR132ZbGTYBkPfSRKkgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GvyHc/btrN29iuWC5/egmR132ZbGTYBkPfSRKkgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GvyHc/btrN29iuWC5/egmR132ZbGTYBkPfSRKkgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGvyHc%2FbtrN29iuWC5%2FegmR132ZbGTYBkPfSRKkgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1594&quot; height=&quot;692&quot; data-filename=&quot;스크린샷 2022-10-07 오후 7.55.42.png&quot; data-origin-width=&quot;1594&quot; data-origin-height=&quot;692&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 &lt;b&gt;추상 메소드(Abstract Method)&lt;/b&gt;를 만들어 보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(추상 메소드란? 추상 클래스를 상속받는 모든 것들이 구현을 해야하는 메소드를 의미한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(메소드란? 클래스안에 존재하는 함수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(참고: property를 private로 만들면 그 클래스를 상속하였을지라도 그 property에 접근할 수 없다. // 인스턴스 밖에서 접근할 수 없고, 다른 자식 클래스에서도 접근 할 수 없다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(필드가 외부로부터 보호받고 다른 자식클래스에서 사용이 되게 하고 싶다면 protected를 사용해야한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추상 메소드를 만들려면, 메소드를 클래스 안에서 구현하지 않으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대신에 메소드의 call signature만 적어두면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-07 오후 8.08.06.png&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;704&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RRfOM/btrN24IhpLa/ZL43S1KRlarJJKl1xRYWPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RRfOM/btrN24IhpLa/ZL43S1KRlarJJKl1xRYWPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RRfOM/btrN24IhpLa/ZL43S1KRlarJJKl1xRYWPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRRfOM%2FbtrN24IhpLa%2FZL43S1KRlarJJKl1xRYWPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1662&quot; height=&quot;704&quot; data-filename=&quot;스크린샷 2022-10-07 오후 8.08.06.png&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/686</guid>
      <comments>https://latte1114.tistory.com/686#entry686comment</comments>
      <pubDate>Fri, 7 Oct 2022 20:08:52 +0900</pubDate>
    </item>
    <item>
      <title>[Typescript] Generic</title>
      <link>https://latte1114.tistory.com/685</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;제네릭은 선언 시점이 아니라 생성 시점에 타입을 명시하여 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리를 만들거나, 다른 개발자가 사용할 기능을 개발하는 경우엔 제너릭이 유용할것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외 대부분의 경우에는 제너릭을 직접 작성할 일은 없을것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대부분의 경우 작성해놓은 제너릭을 사용만 하게 될것이다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Generic의 일반적인 형태&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;type SuperPrint = {
  &amp;lt;T&amp;gt;(arr: T[]): T
}

const superPrint: SuperPrint = (arr) =&amp;gt; arr[0]

const a = superPrint([1, 2, 3, 4]) // number
const b = superPrint([true, false, true]) // boolean
const c = superPrint([&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]) // string
const d = superPrint([1, 2, true, false, &quot;hello&quot;]) // number | boolean | string&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;제너릭을 사용 하는 또 다른 경우&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;타입을 생성할 수 도 있다&lt;/li&gt;
&lt;li&gt;타입을 확장할 수 있다.&lt;/li&gt;
&lt;li&gt;어떤경우는 코드를 저장하기도한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1665050458612&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;type Player&amp;lt;E&amp;gt; = {
  name: string
  extraInfo: E
}

type PlayerExtra = {
  favFood: string
}

type GamePlayer = {
  Player&amp;lt;PlayerExtra&amp;gt;
}

const latte:GamePlayer = {
  name: &quot;latte&quot;,
  extraInfo: {
    favFood: &quot;milk&quot;
  }
}

const hyeon:Player&amp;lt;null&amp;gt; = {
  name: &quot;Hyeon&quot;,
  extraInfo: null
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/685</guid>
      <comments>https://latte1114.tistory.com/685#entry685comment</comments>
      <pubDate>Thu, 6 Oct 2022 17:17:39 +0900</pubDate>
    </item>
    <item>
      <title>[Typescript] over loading</title>
      <link>https://latte1114.tistory.com/684</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;Overloading은 직접 작성하기보다 외부 라이브러리에 자주 보이는 형태로, 하나의 함수가 복수의 Call Signature를 가질 때 발생한다&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;예를 들어, Next.js의 라우터 push가 대충 두 가지 방법으로 페이지를 이동한다고 할 때,&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665040097418&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;router.push(&quot;/home&quot;);

router.push({
path: &quot;/home&quot;,
state: 1
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* Type지정&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665040105349&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;type Config = {
path: string,
state: number
}

type Push = {
  (path: string): void,
  (config: Config): void
}

const push: Push = (config) =&amp;gt; {
if (typeof config === &quot;string&quot;) {
  console.log(config)
} else {
  console.log(config.path)
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/684</guid>
      <comments>https://latte1114.tistory.com/684#entry684comment</comments>
      <pubDate>Thu, 6 Oct 2022 16:02:42 +0900</pubDate>
    </item>
    <item>
      <title>[Typescript] call signature</title>
      <link>https://latte1114.tistory.com/683</link>
      <description>&lt;pre id=&quot;code_1665037979743&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// type 지정
type Add = (a:number, b:number) =&amp;gt; number

// 함수
const add:Add = (a, b) =&amp;gt; a + b&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입스크립트에게 이 함수가 어떻게 호출되는지 설명해주는 부분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시의 함수는 a, b인자를 받아서&amp;nbsp; a + b값을 return하는 함수이며 number, nuber type을 받고 number를 반환하는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/683</guid>
      <comments>https://latte1114.tistory.com/683#entry683comment</comments>
      <pubDate>Thu, 6 Oct 2022 15:33:44 +0900</pubDate>
    </item>
    <item>
      <title>[코딩 컨벤션] 함수이름 앞에 언더바(_)를 쓰는 이유</title>
      <link>https://latte1114.tistory.com/679</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수 명 앞에 _ 언더 바가 있는 코드를 발견했다. 왜일까?&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1663506758777&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var printArray = function() {
  function _print(targetArr) {  //왜 print가 아니라 _print로 썼을까?
   //코드생략
    }
  }
  _print(arguments[0]);
};
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩 컨벤션(스타일 가이드)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수명 앞에 _ 언더바를 붙여주는 것은 일종의 코딩 컨벤션이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩 컨벤션이란 프로그래밍 언어별로 권장하는 코딩 규칙(스타일)이다. 예를 들면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://google.github.io/styleguide/jsguide.html&quot;&gt;구글에서 권장하는 방식&lt;/a&gt;은 링크를 통해 확인할 수 있다. 반드시 따라야 하는 룰이라기 보다는 이해하기 쉬운 코드를 작성하기 위한 가이드 정도로 참고해서 활용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보통은 지역변수나 sub function일 경우 이름앞에 언더바를 써 주는데 이는 자바스크립트의 경우 접근 제한자(public, private)가 없기 때문에 변수명으로 사용범위를 나타내는 것.&amp;nbsp;그렇다면 일반적인 함수 이름에 관한 가이드는 대체로 어떤 게 있을까?&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수 이름&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동사를 사용하여 작성한다. (ex. getElement(), setOption()...)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Private 메소드 인 경우 메서드 이름 앞에 언더스코어(_)를 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;카멜 표기법을 준수한다. 복합어 이름은 첫 번째 단어를 소문자로 작성하고, 두 번째 이상의 단어 첫 글자를 대문자로 작성하여 단어를 구분한다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;함수 이름의 첫 글자로 연속된 두 개의 언더스코어(__) 기호와 달러 기호($)는 사용하지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Getter, Setter 메서드는 반드시 'get + 멤버 변수 이름', 'set + 멤버 변수 이름' 형식으로 작성한다. getElement(); isChecked(); setOption();&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이벤트 핸들러 메서드는&amp;nbsp;_on&amp;nbsp;+ 이벤트명으로 시작하도록 정의한다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Frontend/Javascript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/679</guid>
      <comments>https://latte1114.tistory.com/679#entry679comment</comments>
      <pubDate>Sun, 18 Sep 2022 22:12:58 +0900</pubDate>
    </item>
    <item>
      <title>[Chart_library] apexcharts (그래프 작성 라이브러리)</title>
      <link>https://latte1114.tistory.com/656</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;* apexcharts&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://apexcharts.com/&quot;&gt;https://apexcharts.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;그래프를 쉽게 작성할 수 있게 도와주는 라이브러리&lt;/li&gt;
&lt;li&gt;angular, react, vue전부 호환이 된다.&lt;/li&gt;
&lt;li&gt;글쓴이는 주로 React를 많이 사용한다.&lt;/li&gt;
&lt;li&gt;사용법이 정말 간단하며 디자인 또한 이쁘다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1658736110359&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install --save react-apexcharts apexcharts&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-25 오후 4.59.53.png&quot; data-origin-width=&quot;2520&quot; data-origin-height=&quot;1274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6jUqJ/btrH74UrTFf/NRzhRkKa0IWQ0ckyLdwn6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6jUqJ/btrH74UrTFf/NRzhRkKa0IWQ0ckyLdwn6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6jUqJ/btrH74UrTFf/NRzhRkKa0IWQ0ckyLdwn6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6jUqJ%2FbtrH74UrTFf%2FNRzhRkKa0IWQ0ckyLdwn6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2520&quot; height=&quot;1274&quot; data-filename=&quot;스크린샷 2022-07-25 오후 4.59.53.png&quot; data-origin-width=&quot;2520&quot; data-origin-height=&quot;1274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-25 오후 5.00.14.png&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FGd8S/btrIdxnjwlk/ZHYhePDjUEJExIqYMdn6Qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FGd8S/btrIdxnjwlk/ZHYhePDjUEJExIqYMdn6Qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FGd8S/btrIdxnjwlk/ZHYhePDjUEJExIqYMdn6Qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFGd8S%2FbtrIdxnjwlk%2FZHYhePDjUEJExIqYMdn6Qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;456&quot; data-filename=&quot;스크린샷 2022-07-25 오후 5.00.14.png&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1658735976408&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ApexCharts.js - Open Source JavaScript Charts for your website&quot; data-og-description=&quot;ApexCharts is a a free and open-source modern charting library that helps developers to create beautiful and interactive visualizations for web pages.&quot; data-og-host=&quot;apexcharts.com&quot; data-og-source-url=&quot;https://apexcharts.com/&quot; data-og-url=&quot;https://apexcharts.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://apexcharts.com/&quot; data-source-url=&quot;https://apexcharts.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('&amp;quot;&amp;quot;');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ApexCharts.js - Open Source JavaScript Charts for your website&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;ApexCharts is a a free and open-source modern charting library that helps developers to create beautiful and interactive visualizations for web pages.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;apexcharts.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;* apexcharts 간단 예시코드&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1658736354484&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import Chart from &quot;react-apexcharts&quot;;

&amp;lt;Chart 
  type=&quot;line&quot;
  series={[
    {
      name: &quot;Price&quot;,
      data: [10, 20, 20, 30, 10],
    },
  ]}
  options={{
    chart: { height: 500, width: 500, toolbar: { show: false } },
    theme: { mode: &quot;dark&quot; },
    stroke: {
      curve: &quot;smooth&quot;,
      width: 4,
    },
  }}
/&amp;gt;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Help Coding</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/656</guid>
      <comments>https://latte1114.tistory.com/656#entry656comment</comments>
      <pubDate>Mon, 25 Jul 2022 17:06:29 +0900</pubDate>
    </item>
    <item>
      <title>[React_study] useMatch()</title>
      <link>https://latte1114.tistory.com/655</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;* useMatch()&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;현재 위치를 기준으로 지정된 경로에 대한 일치 데이터를 반환합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;useMatch()의 인자로 url을 넘기어 해당 url과 일치할 경우 url의 정보를 반환하고 일치하기 않을 경우 null을 반환한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;* useMatch() 활용 예시코드&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1658663587413&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { useMatch } from 'react-router-dom';

const priceMatch = useMatch(&quot;/:coinId/price&quot;);
const chartMatch = useMatch(&quot;/:coinId/chart&quot;);

const Tab = styled.span&amp;lt;{ isActive: boolean }&amp;gt;`
  color: ${(props) =&amp;gt; props.isActive ? &quot;white&quot; : &quot;black&quot;};
`;

 &amp;lt;Tabs&amp;gt;
    &amp;lt;Tab isActive={chartMatch !== null}&amp;gt;
      &amp;lt;Link to={`/${coinId}/chart`}&amp;gt;Chart&amp;lt;/Link&amp;gt;
    &amp;lt;/Tab&amp;gt;
    &amp;lt;Tab isActive={priceMatch !== null}&amp;gt;
      &amp;lt;Link to={`/${coinId}/price`}&amp;gt;Price&amp;lt;/Link&amp;gt;
    &amp;lt;/Tab&amp;gt;
&amp;lt;/Tabs&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;useMatch를 이용해 2개의 url을 인자로 받는다.&lt;/li&gt;
&lt;li&gt;url이 일치할 경우 isActive는 true가 되므로 styled-components의 props에 의해서 white가 된다.&lt;/li&gt;
&lt;li&gt;해당 기능을 이용해 현재 클릭중인 url의 색상을 변경해 강조해 줄 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 8.56.56.png&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Moybg/btrH7O3FPa1/sNDtXekTCLoY9LbNJbyvHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Moybg/btrH7O3FPa1/sNDtXekTCLoY9LbNJbyvHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Moybg/btrH7O3FPa1/sNDtXekTCLoY9LbNJbyvHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMoybg%2FbtrH7O3FPa1%2FsNDtXekTCLoY9LbNJbyvHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;976&quot; height=&quot;234&quot; data-filename=&quot;스크린샷 2022-07-24 오후 8.56.56.png&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/React</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/655</guid>
      <comments>https://latte1114.tistory.com/655#entry655comment</comments>
      <pubDate>Sun, 24 Jul 2022 20:46:18 +0900</pubDate>
    </item>
    <item>
      <title>[TypeScript_study] type지정을 쉽게 하는 팁</title>
      <link>https://latte1114.tistory.com/654</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;* TypeScript type지정을 쉽게 하는 팁&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Object.keys() 그리고 Object.values()를 활용한다.&lt;/li&gt;
&lt;li&gt;console에서의 temp를 이용한다.&lt;/li&gt;
&lt;li&gt;연습을 위한 api (&lt;a href=&quot;https://api.coinpaprika.com/v1/coins/btc-bitcoin&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.coinpaprika.com/v1/coins/btc-bitcoin&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. api데이터를 console.log를 이용하여서 console창에 &lt;/b&gt;&lt;b&gt;출력한다.&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.42.04.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;232&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czPtal/btrH3RNdPaD/fZPDtk4yKKPHQCkZQNI080/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czPtal/btrH3RNdPaD/fZPDtk4yKKPHQCkZQNI080/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czPtal/btrH3RNdPaD/fZPDtk4yKKPHQCkZQNI080/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczPtal%2FbtrH3RNdPaD%2FfZPDtk4yKKPHQCkZQNI080%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;116&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.42.04.png&quot; data-origin-width=&quot;998&quot; data-origin-height=&quot;232&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 마우스 우클릭을 하여서 Store object as global variable를 클릭해주어 임시 변수 안에 해당 값들을 담아준다.&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;temp1이라는 임시변수안에 값이 할당된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.43.08.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M4qMW/btrH1Cp25CG/b8e3YkdOk8uRD9wWGOD5MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M4qMW/btrH1Cp25CG/b8e3YkdOk8uRD9wWGOD5MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M4qMW/btrH1Cp25CG/b8e3YkdOk8uRD9wWGOD5MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM4qMW%2FbtrH1Cp25CG%2Fb8e3YkdOk8uRD9wWGOD5MK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;184&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.43.08.png&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.44.03.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djFVPU/btrH6HRc3eK/DH7ejYRV2IyCdqw9zayCLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djFVPU/btrH6HRc3eK/DH7ejYRV2IyCdqw9zayCLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djFVPU/btrH6HRc3eK/DH7ejYRV2IyCdqw9zayCLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjFVPU%2FbtrH6HRc3eK%2FDH7ejYRV2IyCdqw9zayCLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;450&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.44.03.png&quot; data-origin-width=&quot;952&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. Object.keys()를 이용하면 key들이 전부 배열안에 담기게 된다.&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.45.15.png&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;176&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cao2vq/btrH2hsp73M/Bd1RezJyz3WNkkq7GVi87k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cao2vq/btrH2hsp73M/Bd1RezJyz3WNkkq7GVi87k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cao2vq/btrH2hsp73M/Bd1RezJyz3WNkkq7GVi87k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcao2vq%2FbtrH2hsp73M%2FBd1RezJyz3WNkkq7GVi87k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;92&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.45.15.png&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;176&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. Object.keys()를 이용해 key를 가져온뒤 join함수를 이용해 문자열로 변환해준다.&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.46.18.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BHBGi/btrH2hsp9JV/3hoopTKuFgAmkyGm3kjMw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BHBGi/btrH2hsp9JV/3hoopTKuFgAmkyGm3kjMw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BHBGi/btrH2hsp9JV/3hoopTKuFgAmkyGm3kjMw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBHBGi%2FbtrH2hsp9JV%2F3hoopTKuFgAmkyGm3kjMw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;85&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.46.18.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;160&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. Object.vaules()를 이용해서 value를 가져온뒤 map과 typeof를 이용하여서 type을 가져온뒤 join함수를 이용해 문자열로 변환해준다.&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.50.26.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w1Hdu/btrH74L8EqN/KjjZ1fYm4UToAKoE3ikBuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w1Hdu/btrH74L8EqN/KjjZ1fYm4UToAKoE3ikBuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w1Hdu/btrH74L8EqN/KjjZ1fYm4UToAKoE3ikBuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw1Hdu%2FbtrH74L8EqN%2FKjjZ1fYm4UToAKoE3ikBuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;89&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.50.26.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.50.39.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duSpX2/btrH6H4KKIa/pkCrczDKjkQK5KWqNqTdkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duSpX2/btrH6H4KKIa/pkCrczDKjkQK5KWqNqTdkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duSpX2/btrH6H4KKIa/pkCrczDKjkQK5KWqNqTdkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduSpX2%2FbtrH6H4KKIa%2FpkCrczDKjkQK5KWqNqTdkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;72&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.50.39.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;6. (가져온 key와 type을 매칭해주기) &lt;b&gt;해당 값들을 가져온뒤 command + d를 이용해 쉼표(,)를 제거 해주고 option + shift + i를 통해서 전체 값에 입력을 해줄수 있게 한다.&lt;/b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;type이 object인 값이 있을경우 한번 더 확인을 해주어야 한다.(배열이거나 객체일 수 있다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.47.21.png&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PFxFf/btrH32IldhD/ua6kSnMbO24nVx8rXueigk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PFxFf/btrH32IldhD/ua6kSnMbO24nVx8rXueigk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PFxFf/btrH32IldhD/ua6kSnMbO24nVx8rXueigk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPFxFf%2FbtrH32IldhD%2Fua6kSnMbO24nVx8rXueigk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;842&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.47.21.png&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.48.39.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccdnn2/btrH7PBnzc2/KFpPKnKiQHconvqKU1NbaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccdnn2/btrH7PBnzc2/KFpPKnKiQHconvqKU1NbaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccdnn2/btrH7PBnzc2/KFpPKnKiQHconvqKU1NbaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fccdnn2%2FbtrH7PBnzc2%2FKFpPKnKiQHconvqKU1NbaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;822&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.48.39.png&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;924&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.52.30.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLT1J5/btrH75dd5mI/hPmp6KTWPlHL9ixJkL90gK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLT1J5/btrH75dd5mI/hPmp6KTWPlHL9ixJkL90gK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLT1J5/btrH75dd5mI/hPmp6KTWPlHL9ixJkL90gK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLT1J5%2FbtrH75dd5mI%2FhPmp6KTWPlHL9ixJkL90gK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;581&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.52.30.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;7. 가져온 값중에서 object가 있는 경우 아래의 예시 사진처럼 확인해주어서 type을 지정해준다.&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.53.54.png&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TGMgl/btrH1CcvsGt/E0GwDRtb01pOuNKhs5znvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TGMgl/btrH1CcvsGt/E0GwDRtb01pOuNKhs5znvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TGMgl/btrH1CcvsGt/E0GwDRtb01pOuNKhs5znvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTGMgl%2FbtrH1CcvsGt%2FE0GwDRtb01pOuNKhs5znvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;725&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.53.54.png&quot; data-origin-width=&quot;520&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.54.36.png&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXWm7D/btrH6IbwCeh/M2Q07Ame6P6C3PCvAC3Ank/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXWm7D/btrH6IbwCeh/M2Q07Ame6P6C3PCvAC3Ank/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXWm7D/btrH6IbwCeh/M2Q07Ame6P6C3PCvAC3Ank/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXWm7D%2FbtrH6IbwCeh%2FM2Q07Ame6P6C3PCvAC3Ank%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;643&quot; data-filename=&quot;스크린샷 2022-07-24 오후 3.54.36.png&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;874&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/654</guid>
      <comments>https://latte1114.tistory.com/654#entry654comment</comments>
      <pubDate>Sun, 24 Jul 2022 15:55:02 +0900</pubDate>
    </item>
    <item>
      <title>[TypeScript] TypeScript &amp;amp; React SyntheticEvent(합성이벤트)</title>
      <link>https://latte1114.tistory.com/653</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;* [참고] &lt;/b&gt;&lt;a href=&quot;https://ko.reactjs.org/docs/events.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;https://ko.reactjs.org/docs/events.html&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658482204582&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React, { useState } from &quot;react&quot;;
import &quot;./App.css&quot;;

function App() {
  const [value, setValue] = useState(&quot;&quot;);

  const handleValue = (e: React.FormEvent&amp;lt;HTMLInputElement&amp;gt;) =&amp;gt; {
    setValue(e.currentTarget.value);
  };

  const onSubmit = (e: React.FormEvent&amp;lt;HTMLFormElement&amp;gt;) =&amp;gt; {};
  
  const onClick = (e: React.MouseEvent&amp;lt;HTMLButtonElement&amp;gt;) =&amp;gt; {};
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;form onSubmit={onSubmit}&amp;gt;
        &amp;lt;input
          type=&quot;text&quot;
          placeholder=&quot;username&quot;
          value={value}
          onChange={handleValue}
        /&amp;gt;
      &amp;lt;/form&amp;gt;
      &amp;lt;button onClick={onClick}&amp;gt;Click&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

export default App;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;React.event이름.이벤트를 발생시키고 있는 Element 이름&lt;/li&gt;
&lt;li&gt;form안에서 있는 input에서 event가 발생하고 있으므로 FormEvent&amp;lt;HTMLInputElement&amp;gt;로 type을 지정해준다.&lt;/li&gt;
&lt;li&gt;form에서 event가 발생하고 있으므로 FormEvent&amp;lt;HTMLFormElement&amp;gt;로 type을 지정해준다.&lt;/li&gt;
&lt;li&gt;button은 form안에서 동작하고 있지 않기 때문에 MouseEvent&amp;lt;HTMLButtonElement&amp;gt;로 type를 지정해준다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Study/TypeScript</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/653</guid>
      <comments>https://latte1114.tistory.com/653#entry653comment</comments>
      <pubDate>Fri, 22 Jul 2022 18:31:10 +0900</pubDate>
    </item>
    <item>
      <title>[React_study] styled-components를 이용한 dark/light모드</title>
      <link>https://latte1114.tistory.com/652</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;* Theme를 이용한 dark/light모드 만들기&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;index.js파일에 기본 셋팅을 해준다.&lt;/li&gt;
&lt;li&gt;darkTheme와 lightTheme를 만들어준다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;property의 네이밍은 두 객체 모두 동일하게 만들어 주어야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ThemeProvider를 통해서 App을 감싸준다.&lt;/li&gt;
&lt;li&gt;그러면 App컴포넌트 모든곳에서 theme이 사용가능해진다.&lt;/li&gt;
&lt;li&gt;theme이 props로 전달해주는 객체에 따라서 dark/light모드가 변경이 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1658243085357&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// index.js

import { ThemeProvider } from &quot;styled-components&quot;;

const darkTheme = {
  textColor: &quot;whitesmoke&quot;,
  backgroundColor: &quot;#111&quot;,
};

const lightTheme = {
  textColor: &quot;#111&quot;,
  backgroundColor: &quot;#whitesmoke&quot;,
};

const root = ReactDOM.createRoot(document.getElementById(&quot;root&quot;));
root.render(
  &amp;lt;React.StrictMode&amp;gt;
    &amp;lt;ThemeProvider theme={darkTheme}&amp;gt;
      &amp;lt;App /&amp;gt;
    &amp;lt;/ThemeProvider&amp;gt;
  &amp;lt;/React.StrictMode&amp;gt;
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;* props를 이용하여서 property들을 가져와준다.&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1658243300693&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const Title = styled.h1`
  color: ${(props) =&amp;gt; props.theme.textColor};
`;

const Body = styled.div`
  background-color: ${(props) =&amp;gt; props.theme.backgroundColor};
`&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/React</category>
      <author>갈푸라떼</author>
      <guid isPermaLink="true">https://latte1114.tistory.com/652</guid>
      <comments>https://latte1114.tistory.com/652#entry652comment</comments>
      <pubDate>Wed, 20 Jul 2022 00:09:57 +0900</pubDate>
    </item>
  </channel>
</rss>