<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>gaki</title>
    <link>https://beenzi.tistory.com/</link>
    <description>프론트앤드 개발자 유병각의 블로그</description>
    <language>ko</language>
    <pubDate>Tue, 7 Jul 2026 20:07:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>유병각</managingEditor>
    <item>
      <title>테스트</title>
      <link>https://beenzi.tistory.com/173</link>
      <description>&lt;h1&gt;테스트 글쓰기&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8guMu/btsDIAoZAri/cP7lnPsFfrRSjWkrF7daE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8guMu/btsDIAoZAri/cP7lnPsFfrRSjWkrF7daE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8guMu/btsDIAoZAri/cP7lnPsFfrRSjWkrF7daE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8guMu%2FbtsDIAoZAri%2FcP7lnPsFfrRSjWkrF7daE1%2Fimg.jpg&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;800&quot; height=&quot;800&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;wkfwkrehd?&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;const a =1 0;&lt;/code&gt;&lt;/pre&gt;</description>
      <category>테스으</category>
      <category>테스트</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/173</guid>
      <comments>https://beenzi.tistory.com/173#entry173comment</comments>
      <pubDate>Sat, 20 Jan 2024 08:59:44 +0900</pubDate>
    </item>
    <item>
      <title>리액트 - 주요 개념</title>
      <link>https://beenzi.tistory.com/169</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그 함수는 이전 state를 첫 번째 인자로 받아들일 것이고, 업데이트가 적용된 시점의 props를 두 번째 인자로 받습니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2022-미리디스터디</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/169</guid>
      <comments>https://beenzi.tistory.com/169#entry169comment</comments>
      <pubDate>Thu, 21 Jul 2022 09:13:30 +0900</pubDate>
    </item>
    <item>
      <title>디자이너를 위한 UI, UX 디자인</title>
      <link>https://beenzi.tistory.com/168</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;앱을 사용할 때 사용자가 누구인지 시작해서 사용자의 배경, 사회적 조건, 신체적 조건, 좋아하는 색상 및 싫어하는 색상까지 디자인 요소로 반영해야한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;목적 의식 없이 디자인을 하는게 아니라 앱의 사용 계층을 예상하고 그들에 맞는 UI 를 만들어야한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화려한 디자인을 만들고 그 디자인을 자랑하는 식의 페이지가 아니라, 그에 맞게 UI 를 만들어야 좋은 서비스가 될 수 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>독후감</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/168</guid>
      <comments>https://beenzi.tistory.com/168#entry168comment</comments>
      <pubDate>Wed, 20 Jul 2022 12:52:11 +0900</pubDate>
    </item>
    <item>
      <title>Strict Null Checks 를 사용해야하는 이유</title>
      <link>https://beenzi.tistory.com/167</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;TypeScript (Strict Null Checks)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;기본적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;null&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;undefined&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 다른 모든 타입의 하위 타입니다. 이건, null과 undefined를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;number&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;같은 타입에 할당할 수 있다는 것을 의미합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;하지만,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;--strictNullChecks&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 사용하면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;null&lt;span style=&quot;background-color: #ffffff;&quot;&gt;과&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;undefined&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는 오직&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;any&lt;span style=&quot;background-color: #ffffff;&quot;&gt;와 각자 자신들 타입에만 할당 가능합니다. (예외적으로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;undefined&lt;span style=&quot;background-color: #ffffff;&quot;&gt;는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;void&lt;span style=&quot;background-color: #ffffff;&quot;&gt;에 할당 가능합니다) 이건 많은 일반적인 에러를 방지하는 데 도움을 줍니다. 이 경우,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;string&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;null&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;undefined&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 허용하고 싶은 경우 유니언 타입인&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;string | null | undefined&lt;span style=&quot;background-color: #ffffff;&quot;&gt;를 사용할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>TypeScript</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/167</guid>
      <comments>https://beenzi.tistory.com/167#entry167comment</comments>
      <pubDate>Mon, 18 Jul 2022 13:18:21 +0900</pubDate>
    </item>
    <item>
      <title>OSI 7계층이란?</title>
      <link>https://beenzi.tistory.com/166</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;OSI 란, Open Systems &lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;Interconnection Reference Model 의 약자이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;이름만 봐서는 무슨 뜻인지, 어떤 역할을 하는지 잘 모르겠지만 대충 시스템 연결에 관련된 모델이라고 추측해 볼 수 있다.&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;&amp;nbsp;&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: #202122;&quot;&gt;1. 개요&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;OSI 는 7 계층으로 구분되어있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;OSI 라는 건물에는 1층부터 7층 까지 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;이렇게 층을 나눈 이유는 &lt;b&gt;통신이 일어나는 과정을 단계별로 파악 할 수 있기 때문이다. &lt;/b&gt;(코드를 짤 때 하나의 역할을 갖고있는 함수의 느낌)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #202122;&quot;&gt;이렇게 층을 나누면 당연하게도, 오류 발생 시 오류가 발생한 곳만 고치면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 이점때문에 OSI 는 기능에 따라서 7개의 계층으로 구분되어 있다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. OSI 의 7 계층&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;364&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G8td0/btrHzoK49aY/7SD7adMV5jBBdkyIAgXD51/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G8td0/btrHzoK49aY/7SD7adMV5jBBdkyIAgXD51/img.jpg&quot; data-alt=&quot;OSI 의 7계층 그림&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G8td0/btrHzoK49aY/7SD7adMV5jBBdkyIAgXD51/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG8td0%2FbtrHzoK49aY%2F7SD7adMV5jBBdkyIAgXD51%2Fimg.jpg&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;721&quot; height=&quot;364&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;364&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;OSI 의 7계층 그림&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1계층 - 물리계층&amp;nbsp;&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;전기적, 기계적 특성을 이용해서 통신케이블로 데이터를 전송&lt;/b&gt;하는 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 계층에서 사용되는 통신 단위는 비트이며 데이터는 0과 1로 나타내어진다.&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;b&gt;통신 케이블, 리피터, 허브&lt;/b&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;2계층 - 데이터 링크 계층&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;2계층에서는 1계층에서 송, 수신되는 데이터들의 질을 관리하는 역할을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정보의 오류와 흐름을 관리&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2계층에서는 물리 계층에서 발생 할 수 있는 오류를 찾아내고, 수정하는데 필요한 기능적 수단을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주소값은 MAC 주소를 사용하는데 이는 물리적인 네트워크마다 다른 독립적인 값이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 링크계층은 고유한 물리적인 주소를 가지고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프레임에 주소부여(MAC - 물리적주소)&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MiA5x/btrHzn6tWgb/hKpZpnNgi7tbSuClCLkwn0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MiA5x/btrHzn6tWgb/hKpZpnNgi7tbSuClCLkwn0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MiA5x/btrHzn6tWgb/hKpZpnNgi7tbSuClCLkwn0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMiA5x%2FbtrHzn6tWgb%2FhKpZpnNgi7tbSuClCLkwn0%2Fimg.jpg&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;200&quot; height=&quot;150&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;266&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;3계층 - 네트워크 계층&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;물리 계층(1계층)과 데이터 링크 계층(2계층) 에서는 안정적인 데이터를 송,수신하는 역할을 했다면 3계층은&amp;nbsp;&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 data-ke-size=&quot;size16&quot;&gt;정보를 전달할 목적지를 알기위해서, 당연히 이 계층은 IP 주소를 사용한다.&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 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;4계층 - 전송 계층&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;&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>2022-미리디스터디</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/166</guid>
      <comments>https://beenzi.tistory.com/166#entry166comment</comments>
      <pubDate>Sun, 17 Jul 2022 20:46:37 +0900</pubDate>
    </item>
    <item>
      <title>커밋하지 않은 상태에서 다른 branch 로 checkout 시 발생하는 상황</title>
      <link>https://beenzi.tistory.com/165</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@junsikchoi/TIL-Git-%EC%BB%A4%EB%B0%8B-%EC%97%86%EC%9D%B4-Checkout-%ED%95%98%EB%A9%B4-%EC%96%B4%EB%96%A4-%EC%9D%BC%EC%9D%B4-%EC%9D%BC%EC%96%B4%EB%82%A0%EA%B9%8C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@junsikchoi/TIL-Git-%EC%BB%A4%EB%B0%8B-%EC%97%86%EC%9D%B4-Checkout-%ED%95%98%EB%A9%B4-%EC%96%B4%EB%96%A4-%EC%9D%BC%EC%9D%B4-%EC%9D%BC%EC%96%B4%EB%82%A0%EA%B9%8C&lt;/a&gt;&lt;/p&gt;</description>
      <category>git</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/165</guid>
      <comments>https://beenzi.tistory.com/165#entry165comment</comments>
      <pubDate>Fri, 8 Jul 2022 09:15:22 +0900</pubDate>
    </item>
    <item>
      <title>[css] css 선택자, 합성자 (Selector, combinator)</title>
      <link>https://beenzi.tistory.com/164</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;선택자&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Universal selector (전체 선택자)&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;모든 html 요소들을 선택한다.&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; &amp;nbsp; &amp;nbsp; &amp;nbsp;margin: 0;&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;b&gt;2. Type selector (타입 선택자)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용법: html element 이름으로 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 html element 를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;button {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;width: 100px;&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;b&gt;3. Class Selector (클래스 선택자)&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;특정 클래스 elements 를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.table {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 200px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;height: 200px;&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;b&gt;4. ID Selector (아이디 선택자)&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;특정 Id 의 elements 를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#my_id {&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 200px;&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;b&gt;5. Attribute Selector (속성 선택자)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용법: element 의 속성과 속성 값을 이용해서 element 를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a[href^=&quot;www&quot;] {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 200px;&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;해석: a 엘리먼트 중에 href 의 속성 값이 www 로 시작하는 모든 앨리먼트들의 width 를 200px 으로 만든다.&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;attribute selector 에 관한 자세한 정보는 아래 링크에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657007426382&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;Attribute selectors - CSS: Cascading Style Sheets | MDN&quot; data-og-description=&quot;The CSS attribute selector matches elements based on the presence or value of a given attribute.&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&quot; data-og-url=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/efSUlv/hyOZAjNLzX/Yee9VKs0lS9DDoUOJxI54K/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/efSUlv/hyOZAjNLzX/Yee9VKs0lS9DDoUOJxI54K/img.png?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080');&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;Attribute selectors - CSS: Cascading Style Sheets | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The CSS attribute selector matches elements based on the presence or value of a given attribute.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&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;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;합성자 (Combinators)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;1. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Descendant_combinator&quot;&gt;Descendant combinator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 자식 엘리먼트들 중 뒤에 있는 셀렉터에 해당하는 엘리먼트들의 css 를 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div p {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;width: 100px;&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;해석 : div 의 모든 자식 노드들 (손자 노드, 증손자 노드 등 모든 자식 노드 포함) 중 p 에 select 되는 노드들의 width 를 100px 로 한다.&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;2. &lt;b&gt;&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator&quot;&gt;Child combinator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확히 앞의 셀렉터에 선택된 엘리먼트로부터 1단계 밑 자식들 중에 뒤에 있는 셀렉터에 해당하는 엘리먼트들의 css 를 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ul &amp;gt; li {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; width: 50px;&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;해석: ul 의 바로 아래 자손들 중 li 에 해당하는 엘리먼트들의 width 를 50px 로 변경&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;3. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/General_sibling_combinator&quot;&gt;General sibling combinator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 셀렉터보다 순서상 뒤에 있는 형제 엘리먼트들 중에서 뒤의 셀렉터에 해당하는 엘리먼트들의 css 를 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.red_list ~ li {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; width : 400px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;};&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해석: red_list 라는 클래스를 가진 엘리먼트보다 뒤에 있는 엘리먼트들 중에서 li 에 해당하는 모든 엘리먼트들의 width 를 400px 로 변경&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;4. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator&quot;&gt;Adjacent sibling combinator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞의 셀렉터와 바로 뒤에 붙어있는 형제, 두번째 셀렉터에 해당하는 엘리먼트들의 css 를 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div + p {&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 100px;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;};&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div 엘리먼트 바로 뒤에 나오는 형제 p 엘리먼트의 css 를 변경한다.&lt;/p&gt;</description>
      <category>CSS</category>
      <category>combinators</category>
      <category>css selector</category>
      <category>선택자</category>
      <category>합성자</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/164</guid>
      <comments>https://beenzi.tistory.com/164#entry164comment</comments>
      <pubDate>Tue, 5 Jul 2022 17:06:19 +0900</pubDate>
    </item>
    <item>
      <title>[node] nvm use not working ( 노드 버전 변경 안될때) zsh: bad CPU type in executable: node 에러핸들링</title>
      <link>https://beenzi.tistory.com/163</link>
      <description>&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;(M1 맥북기준)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #006dd7; color: #ffffff;&quot;&gt;nvm deactivate&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 터미널에 입력하면, 현재 사용하고있는 노드 버전이 deactivate 됨&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;그 후, nvm use &quot;원하는 노드버전&quot; 을 하면 원하는 노드버전으로 변경이됨.&lt;/p&gt;
&lt;h1&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71122488/zsh-bad-cpu-type-in-executable-node&quot;&gt;zsh: bad CPU type in executable: node&lt;/a&gt;&amp;nbsp;&lt;/h1&gt;
&lt;figure id=&quot;og_1656984185423&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;zsh: bad CPU type in executable: node&quot; data-og-description=&quot;I have installed nvm using brew. After that, I installed node version of 16 through nvm and check the current version using node -v to see whether the node is working properly. However, when I inst...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/71122488/zsh-bad-cpu-type-in-executable-node&quot; data-og-url=&quot;https://stackoverflow.com/questions/71122488/zsh-bad-cpu-type-in-executable-node&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cXd3ub/hyOZKTNFEE/gyAAfLvIv8dy43JFGoHw70/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/LKyel/hyOZBo2BZv/OqkWAFyIDi6Wk9kScj5Q7K/img.png?width=1138&amp;amp;height=260&amp;amp;face=0_0_1138_260&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71122488/zsh-bad-cpu-type-in-executable-node&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/71122488/zsh-bad-cpu-type-in-executable-node&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cXd3ub/hyOZKTNFEE/gyAAfLvIv8dy43JFGoHw70/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/LKyel/hyOZBo2BZv/OqkWAFyIDi6Wk9kScj5Q7K/img.png?width=1138&amp;amp;height=260&amp;amp;face=0_0_1138_260');&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;zsh: bad CPU type in executable: node&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I have installed nvm using brew. After that, I installed node version of 16 through nvm and check the current version using node -v to see whether the node is working properly. However, when I inst...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 위와 같은 에러가 뜨면, (m1 맥북이면 위 에러가 뜸)&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: #006dd7; color: #ffffff;&quot;&gt;&lt;b&gt;softwareupdate&amp;nbsp;--install-rosetta&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위명령어를 터미널에 입력하고, 다시한번 nvm use &quot;노드버전&quot; 을 하면 정상적으로 원하는 노드로 변경이됨&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>node</category>
      <category>bad cpu type in executable:node</category>
      <category>node</category>
      <category>not working</category>
      <category>nvm use</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/163</guid>
      <comments>https://beenzi.tistory.com/163#entry163comment</comments>
      <pubDate>Tue, 5 Jul 2022 10:24:55 +0900</pubDate>
    </item>
    <item>
      <title>[ts] 클래스 protected 프로퍼티에 관해서 알아보자.</title>
      <link>https://beenzi.tistory.com/162</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. gaki 입니다.&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;A 라는 클래스에 protected 로 정의된 property 와 method 가 있다고 가정합시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 A 라는 클래스 내부에서는 당연히 protected 로 정의된 것들에 접근할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 외부에서는 A 라는 클래스 안에 protected 된 것들에 접근할 수 없습니다. 여기까지는 private 과 똑같은데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;protected 와 private 의 차이점은, private 는 private 된 속성을 오직 해당 클래스 내부에서만 접근 할 수 있다는 점이지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;protected 는 해당 속성을 해당 클래스 내부 + 자식 클래스 에서도 접근 할 수 있다는 점이 다릅니다.&lt;/p&gt;
&lt;pre id=&quot;code_1656983684410&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person {
    region: string;
    name: string;
    age: number;
    protected time:string;
    private _pri: number;

    constructor(name, age, region) {
        this.name = name;
        this.age = age;
        this.region = region;
        this.time = &quot;10:21&quot;;
        this._pri = 10;
    }

    eat(food) {
        console.log(`${this.name} is eating ${food}`);
    }

    get pri() {
        return this._pri;
    }

    set pri(num:number) {
        this._pri = num;
    }

    protected sleep() {
        console.log(this.time);
        console.log(&quot;sleep&quot;);
    }
}

class Gak extends Person {
    name: string;
    age: number;
    region: string;
    h : number;

    constructor(name, age, region, h) {
        super(name, age, region);
        this.h = h;
    }

    sleepp() {
        this.sleep();
        console.log(this.time);
    }
}

const gak = new Gak(&quot;gak&quot;, 15, &quot;seoul&quot;, 133);

// private property getter test
console.log(gak.pri);
// private property setter test
gak.pri = 1111;
console.log(gak.pri);

// protected method test on child class
gak.sleepp();&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;&amp;nbsp;&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;? private 속성을 getter 와 setter 를 통해 클래스 외부에서 변경 할 수 있는지 ? =&amp;gt; 가능하다.&lt;/b&gt;&lt;/p&gt;</description>
      <category>TypeScript</category>
      <category>Class</category>
      <category>private</category>
      <category>protected</category>
      <category>ts protected</category>
      <category>자바스크립트 클래스</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/162</guid>
      <comments>https://beenzi.tistory.com/162#entry162comment</comments>
      <pubDate>Tue, 5 Jul 2022 10:14:50 +0900</pubDate>
    </item>
    <item>
      <title>[ts] 클래스 extends, implements 에 대해서</title>
      <link>https://beenzi.tistory.com/161</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;계기: 코드를 보다가 클래스의 extends 와 Implements 가 나왔는데, 특히 implements 에 대해서 잘 몰라서 찾아봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고링크 : &lt;a href=&quot;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1656922933732&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;What's the difference between 'extends' and 'implements' in TypeScript&quot; data-og-description=&quot;I would like to know what Man and Child have in common and how they differ. class Person { name: string; age: number; } class Child extends Person {} class Man implements Person {}&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&quot; data-og-url=&quot;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sGEPo/hyOZzYFS3K/XKXipgkWu5XOXPNP7r9RN0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/38834625/whats-the-difference-between-extends-and-implements-in-typescript&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sGEPo/hyOZzYFS3K/XKXipgkWu5XOXPNP7r9RN0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;What's the difference between 'extends' and 'implements' in TypeScript&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I would like to know what Man and Child have in common and how they differ. class Person { name: string; age: number; } class Child extends Person {} class Man implements Person {}&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. class 의 extends 기능&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스의 extends 는 클래스를 확장시킬 때 사용됩니다. 그리고 부모, 자식 관계가 형성됩니다. (부모 , 자식 관계의 프로토타입 체인이 형성됨)&lt;/p&gt;
&lt;pre id=&quot;code_1656923414051&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Person {
    region: string;
    name: string;
    age: number;

    constructor(name, age, region) {
        this.name = name;
        this.age = age;
        this.region = region;
    }

    eat(food) {
        console.log(`${this.name} is eating ${food}`);
    }
}

class Gak extends Person {
    name: string;
    age: number;
    region: string;
    h : number;

    constructor(name, age, region, h) {
        super(name, age, region);
        this.h = h;
    }
}

const gak = new Gak(&quot;gak&quot;, 15, &quot;seoul&quot;, 133);
console.log(gak);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드에서 Gak 이라는 클래스는 Person 클래스를 확장시켜서 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Gak 클래스의 인스턴스는 &lt;b&gt;Person 클래스의 인스턴스의 값들을 기본으로 가지고, 거기다 추가로 특정 기능을 가집&lt;/b&gt;니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, Gak 의 부모가 Person 이 되며, Gak 인스턴스에서 Person 에 있는 속성이나 메서드에 접근했을때 프로토타입 체인을 타고 부모에게로 가서 사실상 부모인 Person 의 속성이나 메서드에 접근하는 것이지요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. class 의 implements 기능&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스의 implements 는 (내가 공부한 바로는) 타입스크립트 interface 를 값으로 받으며, 해당 값으로 클래스의 타입을 설정하는 역할을 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1656923719097&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface Person {
    name: string;
    age: string;
    eat(): void;
}

class SuperMan implements Person{
    name: string;
    age: string;

    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    eat() {
        console.log(this.name);
    }
}

const Jack = new SuperMan(&quot;Jack&quot;, &quot;15&quot;);
Jack.eat();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SuperMan 이라는 클래스는 Person 이라는 interface 를 Implements(도구) 로 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 SuperMan 클래스의 인스턴스에는 최소한 Person Interface 에 속한 내용들이 존재해야한다.&amp;nbsp;&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>TypeScript</category>
      <author>유병각</author>
      <guid isPermaLink="true">https://beenzi.tistory.com/161</guid>
      <comments>https://beenzi.tistory.com/161#entry161comment</comments>
      <pubDate>Mon, 4 Jul 2022 17:36:32 +0900</pubDate>
    </item>
  </channel>
</rss>