{"id":17018,"date":"2026-07-26T11:25:19","date_gmt":"2026-07-26T02:25:19","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=17018"},"modified":"2026-07-26T11:48:54","modified_gmt":"2026-07-26T02:48:54","slug":"typescript-%ec%a0%9c%eb%84%a4%eb%a6%ad-%ec%a0%9c%ec%95%bd%ec%a1%b0%ea%b1%b4%ec%97%90%ec%84%9c-%ed%83%80%ec%9e%85-%eb%a7%a4%ea%b0%9c%eb%b3%80%ec%88%98-%ec%82%ac%ec%9a%a9-using-type-parameters-in-gene","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=17018","title":{"rendered":"TypeScript, \uc81c\ub124\ub9ad \uc81c\uc57d\uc870\uac74\uc5d0\uc11c \ud0c0\uc785 \ub9e4\uac1c\ubcc0\uc218 \uc0ac\uc6a9 (Using Type Parameters in Generic Constraints)"},"content":{"rendered":"<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">\r\nfunction getProperty&lt;Type, Key extends keyof Type>(obj: Type, key: Key) {\r\n  return obj[key];\r\n}\r\n<\/pre>\n<p>\uc704\uc758 \ud568\uc218\ub294 Type\uc5d0 \ub300\ud55c \uac1d\uccb4\ub97c \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \ubc1b\uace0 \ub450\ubc88\uc9f8 \uc778\uc790\ub85c Type\uc5d0 \ub300\ud55c \ud504\ub85c\ud37c\ud2f0\uc758 \ud0a4\ub97c \ubc1b\uc2b5\ub2c8\ub2e4. \uc608\ub4e4\ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">\r\nlet x = { a: 1, b: 2, c: 3, d: 4 };\r\n \r\ngetProperty(x, \"a\");\r\ngetProperty(x, \"m\");\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c 4\ubc88\uc9f8 \ucf54\ub4dc\ub294 &#8220;m&#8221; \ud615\uc2dd\uc758 \uc778\uc218\ub294 &#8220;a&#8221; | &#8220;b&#8221; | &#8220;c&#8221; | &#8220;d&#8221; \ud615\uc2dd\uc758 \ub9e4\uac1c \ubcc0\uc218\uc5d0 \ud560\ub2f9\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.&#8221;\ub77c\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/p>\n<p>\ucc38\uace0\ub85c \uc0c1\uae30 \ucf54\ub4dc\uc5d0\uc11c <code class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">keyof<\/code>\uac00 \uc0ac\uc6a9\ub418\uc5c8\ub294\ub370, <code class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">keyof<\/code> \uc5f0\uc0b0\uc790\ub294 \uac1d\uccb4 \ud0c0\uc785\uc5d0\uc11c \uac1d\uccb4\uc758 \ud0a4 \uac12\ub4e4\uc744 \uc22b\uc790\ub098 \ubb38\uc790\uc5f4 \ub9ac\ud130\ub7f4 \uc720\ub2c8\uc5b8\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. \uc544\ub798 \ud0c0\uc785 P\ub294 <code class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">\"x\" | \"y\"<\/code>\uc640 \ub3d9\uc77c\ud55c \ud0c0\uc785\uc785\ub2c8\ub2e4.<\/p>\n<p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\">\r\ntype Point = { x: number; y: number };\r\ntype P = keyof Point;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>function getProperty&lt;Type, Key extends keyof Type>(obj: Type, key: Key) { return obj[key]; } \uc704\uc758 \ud568\uc218\ub294 Type\uc5d0 \ub300\ud55c \uac1d\uccb4\ub97c \uccab\ubc88\uc9f8 \uc778\uc790\ub85c \ubc1b\uace0 \ub450\ubc88\uc9f8 \uc778\uc790\ub85c Type\uc5d0 \ub300\ud55c \ud504\ub85c\ud37c\ud2f0\uc758 \ud0a4\ub97c \ubc1b\uc2b5\ub2c8\ub2e4. \uc608\ub4e4\ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4. let x = { a: 1, b: 2, c: 3, d: 4 }; getProperty(x, &#8220;a&#8221;); getProperty(x, &#8220;m&#8221;); \uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c 4\ubc88\uc9f8 \ucf54\ub4dc\ub294 &#8220;m&#8221; \ud615\uc2dd\uc758 \uc778\uc218\ub294 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=17018\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;TypeScript, \uc81c\ub124\ub9ad \uc81c\uc57d\uc870\uac74\uc5d0\uc11c \ud0c0\uc785 \ub9e4\uac1c\ubcc0\uc218 \uc0ac\uc6a9 (Using Type Parameters in Generic Constraints)&#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":[157],"tags":[],"class_list":["post-17018","post","type-post","status-publish","format-standard","hentry","category-typescript"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17018","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=17018"}],"version-history":[{"count":5,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17018\/revisions"}],"predecessor-version":[{"id":17021,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/17018\/revisions\/17021"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=17018"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=17018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}