{"id":1481,"date":"2024-12-30T23:39:47","date_gmt":"2024-12-30T23:39:47","guid":{"rendered":"https:\/\/kalkus.dev\/blog\/?p=1481"},"modified":"2024-12-30T23:39:47","modified_gmt":"2024-12-30T23:39:47","slug":"definiowanie-enumow-w-typescript-za-pomoca-typow-literalnych","status":"publish","type":"post","link":"https:\/\/kalkus.dev\/blog\/2024\/12\/30\/definiowanie-enumow-w-typescript-za-pomoca-typow-literalnych\/","title":{"rendered":"Definiowanie enum\u00f3w w TypeScript za pomoc\u0105 typ\u00f3w literalnych"},"content":{"rendered":"\n<p>M\u00f3j ulubiony spos\u00f3b definiowania typ\u00f3w dla enum\u00f3w w TypeScript jest nieco nieintuicyjny, ale przyjemny w u\u017cytkowaniu. Najpierw definiujemy <code>const<\/code> z kluczami i warto\u015bciami, a nast\u0119pnie tworzymy z niego typ.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const Animal = {\n   Dog: 'dog',\n   Cat: 'cat'\n} as const;\n\ntype Animal = typeof Animal[keyof typeof Animal];\n<\/pre>\n\n\n\n<p>Mo\u017ce si\u0119 to wydawa\u0107 dziwne, poniewa\u017c tworzymy zar\u00f3wno <code>const<\/code>, jak i <code>type<\/code> o tej samej nazwie, ale dzia\u0142a to bezproblemowo. Typu mo\u017cna wygodnie u\u017cywa\u0107 jak enuma!<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"typescript\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if (someAnimal === Animal.Dog) {\n   ...\n}\n<\/pre>\n\n\n\n<p>To podej\u015bcie daje nam code completion, jest zgodne z zasadami programowania funkcyjnego i nie generuje narzutu w runtime (w przeciwie\u0144stwie do enum\u00f3w).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f3j ulubiony spos\u00f3b definiowania typ\u00f3w dla enum\u00f3w w TypeScript jest nieco nieintuicyjny, ale przyjemny w u\u017cytkowaniu. Najpierw definiujemy const z kluczami i warto\u015bciami, a nast\u0119pnie tworzymy z niego typ. Mo\u017ce si\u0119 to wydawa\u0107 dziwne, poniewa\u017c tworzymy zar\u00f3wno const, jak i type o tej samej nazwie, ale dzia\u0142a to bezproblemowo. Typu mo\u017cna wygodnie u\u017cywa\u0107 jak enuma! [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7],"tags":[217],"_links":{"self":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1481"}],"collection":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/comments?post=1481"}],"version-history":[{"count":1,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1481\/revisions"}],"predecessor-version":[{"id":1484,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/posts\/1481\/revisions\/1484"}],"wp:attachment":[{"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/media?parent=1481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/categories?post=1481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kalkus.dev\/blog\/wp-json\/wp\/v2\/tags?post=1481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}