{"id":17058,"date":"2026-08-03T12:18:08","date_gmt":"2026-08-03T03:18:08","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=17058"},"modified":"2026-08-03T12:19:03","modified_gmt":"2026-08-03T03:19:03","slug":"typescript-%eb%a9%94%ed%83%80-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%98%eb%b0%8d","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=17058","title":{"rendered":"TypeScript, \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d &#8230;"},"content":{"rendered":"<p>TypeScript\ub294 \ucf54\ub4dc\uc5d0 \ub300\ud55c \ucf54\ub4dc \uc791\uc131\uc744 \ubaa9\uc801\uc73c\ub85c \ud558\ub294 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \ud604\uc874\ud558\ub294 \ub300\ub2e4\uc218\uc758 \uac70\uc758 \ub300\ubd80\ubd84\uc758 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uac00 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc, \ud2b9\ud788 TypeScript\ub294 \ucf54\ub4dc\uc5d0\uc11c \ud0c0\uc785\uc744 \uc790\ub3d9\uc73c\ub85c \uc0c8\ub86d\uac8c \uc7ac\uc815\uc758\uac00 \uac00\ub2a5\ud558\ub2e4\ub294 \uc810\uc5d0\uc11c \ub2e4\ub978 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ubcf4\ub2e4 \uc870\uae08\uc740 \ub354 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc801\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud0c0\uc785\uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc704\ud574 \uc81c\uacf5\ud558\ub294 \uae30\ub2a5\uc740 Generic, keyof, typeof, Conditional Types, Mapped Types, Template Literal Types \ub4f1\uc774 \uc788\uace0 \uc11c\ube0c\uc14b\uc740 JavaScript\uc758 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d \uae30\ub2a5\uc778 Proxy, Reflect, Decorator(\uc81c\uc548), Object.defineProperty() \ub4f1\uc785\ub2c8\ub2e4. \ud0c0\uc785\uc2a4\ud06c\ub9bd\ud2b8\uc5d0 \ud55c\uc815\ud558\uc5ec \ubcfc\ub54c \uc544\ub798\ub294 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc704\ud574 \uc81c\uacf5\ud558\ub294 \uc544\ub798\uc758 \uc608\uc81c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">\r\n\/\/ Generic\r\ntype Box&lt;T> = { value: T };\r\n\r\n\/\/ keyof\r\ntype Keys = keyof T;\r\n\r\n\/\/ typeof\r\ntype T = typeof value;\r\n\r\n\/\/ Indexed Access Type\r\ntype Value = T[K];\r\n\r\n\/\/ Mapped Type\r\ntype Readonly&lt;T> = {\r\n    readonly [K in keyof T]: T[K];\r\n};\r\n\r\n\/\/ Conditional Type\r\ntype Result&lt;T> = T extends string ? number : boolean;\r\n\r\n\/\/ Template Literal Type\r\ntype Event&lt;T extends string> = `${T}Changed`;\r\n\r\n\/\/ infer\r\ntype Return&lt;T> = T extends (...args: any[]) => infer R ? R : never;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript\ub294 \ucf54\ub4dc\uc5d0 \ub300\ud55c \ucf54\ub4dc \uc791\uc131\uc744 \ubaa9\uc801\uc73c\ub85c \ud558\ub294 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc785\ub2c8\ub2e4. \ud604\uc874\ud558\ub294 \ub300\ub2e4\uc218\uc758 \uac70\uc758 \ub300\ubd80\ubd84\uc758 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uac00 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc, \ud2b9\ud788 TypeScript\ub294 \ucf54\ub4dc\uc5d0\uc11c \ud0c0\uc785\uc744 \uc790\ub3d9\uc73c\ub85c \uc0c8\ub86d\uac8c \uc7ac\uc815\uc758\uac00 \uac00\ub2a5\ud558\ub2e4\ub294 \uc810\uc5d0\uc11c \ub2e4\ub978 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\ubcf4\ub2e4 \uc870\uae08\uc740 \ub354 \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc801\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud0c0\uc785\uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uc704\ud574 \uc81c\uacf5\ud558\ub294 \uae30\ub2a5\uc740 Generic, keyof, typeof, Conditional Types, Mapped Types, Template Literal Types &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=17058\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;TypeScript, \uba54\ud0c0 \ud504\ub85c\uadf8\ub798\ubc0d &#8230;&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[145,1],"tags":[],"class_list":["post-17058","post","type-post","status-publish","format-standard","hentry","category-three-js","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17058"}],"version-history":[{"count":2,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17058\/revisions"}],"predecessor-version":[{"id":17060,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17058\/revisions\/17060"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17058"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}