{"id":49965,"date":"2023-12-17T05:27:42","date_gmt":"2023-12-17T05:27:42","guid":{"rendered":"https:\/\/masterskills.org\/blog\/top-20-cau-hoi-phong-van-typescript-hay-gap-nhat.html"},"modified":"2023-12-17T05:27:42","modified_gmt":"2023-12-17T05:27:42","slug":"top-20-cau-hoi-phong-van-typescript-hay-gap-nhat","status":"publish","type":"post","link":"https:\/\/masterskills.org\/blog\/top-20-cau-hoi-phong-van-typescript-hay-gap-nhat.html","title":{"rendered":"Top 20+ C\u00e2u H\u1ecfi Ph\u1ecfng V\u1ea5n Typescript Hay G\u1eb7p Nh\u1ea5t\u00a0"},"content":{"rendered":"<div class=\"col\">\n<p>B\u1ea1n \u0111ang chu\u1ea9n b\u1ecb cho m\u1ed9t cu\u1ed9c ph\u1ecfng v\u1ea5n Typescript v\u00e0 t\u00ecm ki\u1ebfm m\u1ed9t s\u1ed1 th\u00f4ng tin chi ti\u1ebft h\u1eefu \u00edch? Typescript tr\u1edf n\u00ean v\u00f4 c\u00f9ng ph\u1ed5 bi\u1ebfn \u0111\u1ed1i v\u1edbi c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n nh\u1edd kh\u1ea3 n\u0103ng th\u00eam ki\u1ec3u g\u00f5 t\u0129nh v\u00e0o JavaScript, d\u1eabn \u0111\u1ebfn m\u00e3 m\u1ea1nh m\u1ebd h\u01a1n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. \u0110\u1ec3 gi\u00fap b\u1ea1n v\u01b0\u1ee3t qua cu\u1ed9c ph\u1ecfng v\u1ea5n Typescript, Masterskills \u0111\u00e3 t\u1ed5ng h\u1ee3p danh s\u00e1ch h\u01a1n 20 <strong>c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Typescript<\/strong> th\u01b0\u1eddng g\u1eb7p nh\u1ea5t c\u00f9ng v\u1edbi m\u1ed9t v\u00e0i g\u1ee3i \u00fd tr\u1ea3 l\u1eddi!<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-cau-h\u1ecfi-ph\u1ecfng-v\u1ea5n-typescript-danh-cho-fresher\"><strong>C\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Typescript d\u00e0nh cho fresher\u00a0<\/strong><\/h2>\n<p>\u0110\u1ea7u ti\u00ean, h\u00e3y \u0111\u1ebfn v\u1edbi c\u00e1c <strong>c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Typescript<\/strong> c\u01a1 b\u1ea3n d\u00e0nh cho fresher:<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-1-cac-ki\u1ec3u-nguyen-th\u1ee7y-trong-typescript-la-gi\"><strong>1. C\u00e1c ki\u1ec3u nguy\u00ean th\u1ee7y trong Typescript l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>Khi n\u00f3i \u0111\u1ebfn Typescript, vi\u1ec7c hi\u1ec3u c\u00e1c ki\u1ec3u nguy\u00ean th\u1ee7y l\u00e0 r\u1ea5t quan tr\u1ecdng. C\u00e1c ki\u1ec3u nguy\u00ean th\u1ee7y trong Typescript bao g\u1ed3m s\u1ed1, chu\u1ed7i, boolean, null, kh\u00f4ng x\u00e1c \u0111\u1ecbnh, k\u00fd hi\u1ec7u v\u00e0 bigint. C\u00e1c lo\u1ea1i n\u00e0y \u0111\u1ea1i di\u1ec7n cho c\u00e1c kh\u1ed1i x\u00e2y d\u1ef1ng c\u01a1 b\u1ea3n c\u1ee7a d\u1eef li\u1ec7u trong ng\u00f4n ng\u1eef.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-2-hay-gi\u1ea3i-thich-cach-cac-m\u1ea3ng-ho\u1ea1t-d\u1ed9ng-trong-typescript\"><strong>2. H\u00e3y gi\u1ea3i th\u00edch c\u00e1ch c\u00e1c m\u1ea3ng ho\u1ea1t \u0111\u1ed9ng trong Typescript<\/strong><\/h3>\n<p>Trong Typescript, c\u00e1c m\u1ea3ng t\u01b0\u01a1ng t\u1ef1 nh\u01b0 trong JavaScript. Ch\u00fang cho ph\u00e9p b\u1ea1n l\u01b0u tr\u1eef nhi\u1ec1u gi\u00e1 tr\u1ecb c\u00f9ng lo\u1ea1i. B\u1ea1n c\u00f3 th\u1ec3 khai b\u00e1o m\u1ed9t m\u1ea3ng b\u1eb1ng c\u00e1ch ch\u1ec9 \u0111\u1ecbnh lo\u1ea1i ph\u1ea7n t\u1eed c\u1ee7a n\u00f3, theo sau l\u00e0 d\u1ea5u ngo\u1eb7c vu\u00f4ng, ch\u1eb3ng h\u1ea1n nh\u01b0 \u201cs\u1ed1[]\u201d cho m\u1ed9t m\u1ea3ng s\u1ed1. M\u1ea3ng c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c kh\u1edfi t\u1ea1o b\u1eb1ng ch\u1eef ho\u1eb7c \u0111\u1ed9ng th\u00f4ng qua c\u00e1c ph\u01b0\u01a1ng th\u1ee9c kh\u00e1c nhau do Typescript cung c\u1ea5p.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-3-unknown-type-la-gi-khi-nao-thi-s\u1eed-d\u1ee5ng-no-trong-typescript\"><strong>3. Unknown type l\u00e0 g\u00ec? Khi n\u00e0o th\u00ec s\u1eed d\u1ee5ng n\u00f3 trong Typescript?\u00a0<\/strong><\/h3>\n<p>Unknown type l\u00e0 \u0111\u1ed1i t\u00e1c an to\u00e0n c\u1ee7a b\u1ea5t k\u1ef3 type n\u00e0o. B\u1ea1n c\u00f3 th\u1ec3 g\u00e1n b\u1ea5t k\u1ef3 th\u1ee9 g\u00ec cho Unknown type, nh\u01b0ng Unknown type kh\u00f4ng th\u1ec3 g\u00e1n cho b\u1ea5t k\u1ef3 \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0o ngo\u1ea1i tr\u1eeb ch\u00ednh n\u00f3 v\u00e0 b\u1ea5t k\u1ef3 \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0o m\u00e0 kh\u00f4ng th\u1ef1c hi\u1ec7n x\u00e1c nh\u1eadn lo\u1ea1i thu h\u1eb9p d\u1ef1a tr\u00ean lu\u1ed3ng \u0111i\u1ec1u khi\u1ec3n. B\u1ea1n kh\u00f4ng th\u1ec3 th\u1ef1c hi\u1ec7n b\u1ea5t k\u1ef3 thao t\u00e1c n\u00e0o tr\u00ean m\u1ed9t bi\u1ebfn thu\u1ed9c Unknown type m\u00e0 kh\u00f4ng x\u00e1c nh\u1eadn tr\u01b0\u1edbc ho\u1eb7c thu h\u1eb9p n\u00f3 th\u00e0nh m\u1ed9t type c\u1ee5 th\u1ec3 h\u01a1n.<\/p>\n<p>H\u00e3y xem x\u00e9t v\u00ed d\u1ee5 sau. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1ch t\u1ea1o bi\u1ebfn foo c\u00f3 ki\u1ec3u kh\u00f4ng x\u00e1c \u0111\u1ecbnh v\u00e0 g\u00e1n gi\u00e1 tr\u1ecb chu\u1ed7i cho n\u00f3. N\u1ebfu ch\u00fang ta c\u1ed1 g\u1eafng g\u00e1n Unknown type \u0111\u00f3 cho m\u1ed9t bi\u1ebfn chu\u1ed7i bar, tr\u00ecnh bi\u00ean d\u1ecbch s\u1ebd b\u00e1o l\u1ed7i.<\/p>\n<p>let foo: unknown = \u201cAkshay\u201d;<\/p>\n<p>let bar: string = foo; \/\/ Type \u2018unknown\u2019 is not assignable to type \u2018string\u2019.(2322)<\/p>\n<p>B\u1ea1n c\u00f3 th\u1ec3 thu h\u1eb9p m\u1ed9t bi\u1ebfn c\u00f3 Unknown type th\u00e0nh m\u1ed9t bi\u1ebfn c\u1ee5 th\u1ec3 b\u1eb1ng c\u00e1ch th\u1ef1c hi\u1ec7n ki\u1ec3m tra ki\u1ec3u ho\u1eb7c ki\u1ec3m tra so s\u00e1nh ho\u1eb7c s\u1eed d\u1ee5ng b\u1ed9 b\u1ea3o v\u1ec7 type. V\u00ed d\u1ee5: ch\u00fang ta c\u00f3 th\u1ec3 tho\u00e1t kh\u1ecfi l\u1ed7i tr\u00ean b\u1eb1ng c\u00e1ch:\u00a0<\/p>\n<p>let foo: unknown = \u201cAkshay\u201d;<\/p>\n<p>let bar: string = foo as string;<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-4-lam-th\u1ebf-nao-d\u1ec3-t\u1ea1o-objects-trong-typescript\"><strong>4. L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u1ea1o Objects trong Typescript?\u00a0<\/strong><\/h3>\n<p>C\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng (Objects) l\u00e0 c\u00e1c b\u1ed9 s\u01b0u t\u1eadp kh\u00f3a v\u00e0 gi\u00e1 tr\u1ecb gi\u1ed1ng nh\u01b0 t\u1eeb \u0111i\u1ec3n. C\u00e1c Objects ph\u1ea3i l\u00e0 duy nh\u1ea5t. Ch\u00fang t\u01b0\u01a1ng t\u1ef1 nh\u01b0 m\u1ea3ng v\u00e0 \u0111\u00f4i khi c\u00f2n \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 m\u1ea3ng k\u1ebft h\u1ee3p. Tuy nhi\u00ean, m\u1ed9t m\u1ea3ng s\u1eed d\u1ee5ng c\u00e1c s\u1ed1 \u0111\u1ec3 l\u1eadp ch\u1ec9 m\u1ee5c c\u00e1c gi\u00e1 tr\u1ecb, trong khi m\u1ed9t Object cho ph\u00e9p b\u1ea1n s\u1eed d\u1ee5ng b\u1ea5t k\u1ef3 lo\u1ea1i n\u00e0o kh\u00e1c l\u00e0m kh\u00f3a.<\/p>\n<p>Trong TypeScript, m\u1ed9t lo\u1ea1i Object \u0111\u1ec1 c\u1eadp \u0111\u1ebfn b\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb n\u00e0o c\u00f3 thu\u1ed9c t\u00ednh. N\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a b\u1eb1ng c\u00e1ch \u0111\u01a1n gi\u1ea3n li\u1ec7t k\u00ea c\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ki\u1ec3u c\u1ee7a ch\u00fang. V\u00ed d\u1ee5:<\/p>\n<pre class=\"wp-block-code\"><code>let pt: { x: number; y: number } = {\n\n\u00a0\u00a0x: 10,\n\n\u00a0\u00a0y: 20\n\n};<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-5-ki\u1ec3u-void-la-gi-khi-nao-thi-s\u1eed-d\u1ee5ng-ki\u1ec3u-void\"><strong>5. Ki\u1ec3u void l\u00e0 g\u00ec? Khi n\u00e0o th\u00ec s\u1eed d\u1ee5ng ki\u1ec3u void?\u00a0<\/strong><\/h3>\n<p>Ki\u1ec3u void bi\u1ec3u th\u1ecb s\u1ef1 v\u1eafng m\u1eb7t c\u1ee7a type tr\u00ean m\u1ed9t bi\u1ebfn. N\u00f3 ho\u1ea1t \u0111\u1ed9ng nh\u01b0 m\u1ed9t lo\u1ea1i ng\u01b0\u1ee3c l\u1ea1i v\u1edbi any type. N\u00f3 \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch trong c\u00e1c h\u00e0m kh\u00f4ng tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb:<\/p>\n<pre class=\"wp-block-code\"><code>function notify(): void {\n\n\u00a0\u00a0alert(\"The user has been notified.\");\n\n}<\/code><\/pre>\n<p>N\u1ebfu m\u1ed9t bi\u1ebfn thu\u1ed9c ki\u1ec3u void, b\u1ea1n ch\u1ec9 c\u00f3 th\u1ec3 g\u00e1n gi\u00e1 tr\u1ecb null ho\u1eb7c kh\u00f4ng x\u00e1c \u0111\u1ecbnh cho bi\u1ebfn \u0111\u00f3.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-6-gi\u1ea3i-thich-khai-ni\u1ec7m-null-va-cong-d\u1ee5ng-c\u1ee7a-no-trong-typescript\"><strong>6. Gi\u1ea3i th\u00edch kh\u00e1i ni\u1ec7m null v\u00e0 c\u00f4ng d\u1ee5ng c\u1ee7a n\u00f3 trong Typescript\u00a0<\/strong><\/h3>\n<p>Trong l\u1eadp tr\u00ecnh, gi\u00e1 tr\u1ecb null bi\u1ec3u th\u1ecb s\u1ef1 v\u1eafng m\u1eb7t c\u1ee7a gi\u00e1 tr\u1ecb. M\u1ed9t bi\u1ebfn null kh\u00f4ng tr\u1ecf \u0111\u1ebfn b\u1ea5t k\u1ef3 \u0111\u1ed1i t\u01b0\u1ee3ng n\u00e0o kh\u00e1c. Do \u0111\u00f3, b\u1ea1n kh\u00f4ng th\u1ec3 truy c\u1eadp b\u1ea5t k\u1ef3 thu\u1ed9c t\u00ednh n\u00e0o tr\u00ean bi\u1ebfn ho\u1eb7c g\u1ecdi m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c tr\u00ean \u0111\u00f3.<\/p>\n<p>Trong TypeScript, gi\u00e1 tr\u1ecb null \u0111\u01b0\u1ee3c bi\u1ec3u th\u1ecb b\u1eb1ng t\u1eeb kh\u00f3a \u2018null\u2019. B\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra xem m\u1ed9t gi\u00e1 tr\u1ecb c\u00f3 ph\u1ea3i l\u00e0 null hay kh\u00f4ng b\u1eb1ng c\u00e1ch sau:<\/p>\n<pre class=\"wp-block-code\"><code>function greet(name: string | null) {\n\nif (name === null) {\n\n\u00a0\u00a0console.log(\"Name is not provided\");\n\n} else {\n\n\u00a0\u00a0console.log(\"Good morning, \" + name.toUpperCase());\n\n}\n\n}\n\nvar foo = null;\n\ngreet(foo); \/\/ \"Name is not provided\"\n\nfoo = \"Anders\";\n\ngreet(foo);\u00a0 \/\/ \"Good morning, ANDERS\"<\/code><\/pre>\n<h3 class=\"wp-block-heading\" id=\"h-7-undefined-trong-typescript-la-gi\"><strong>7. Undefined trong Typescript l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>Khi m\u1ed9t bi\u1ebfn \u0111\u01b0\u1ee3c khai b\u00e1o m\u00e0 kh\u00f4ng kh\u1edfi t\u1ea1o, n\u00f3 \u0111\u01b0\u1ee3c g\u00e1n gi\u00e1 tr\u1ecb kh\u00f4ng x\u00e1c \u0111\u1ecbnh, t\u1ee9c Undefined. B\u1ea3n th\u00e2n n\u00f3 kh\u00f4ng h\u1eefu \u00edch l\u1eafm. M\u1ed9t bi\u1ebfn kh\u00f4ng \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh n\u1ebfu n\u00f3 \u0111\u01b0\u1ee3c khai b\u00e1o, nh\u01b0ng kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb n\u00e0o \u0111\u01b0\u1ee3c g\u00e1n cho n\u00f3. Ng\u01b0\u1ee3c l\u1ea1i, null \u0111\u01b0\u1ee3c g\u00e1n cho m\u1ed9t bi\u1ebfn v\u00e0 n\u00f3 kh\u00f4ng \u0111\u1ea1i di\u1ec7n cho gi\u00e1 tr\u1ecb n\u00e0o.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-8-m\u1ee5c-dich-c\u1ee7a-ki\u1ec3u-never-trong-typescript-la-gi\"><strong>8. M\u1ee5c \u0111\u00edch c\u1ee7a ki\u1ec3u never trong Typescript l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>\u0110\u00fang nh\u01b0 t\u00ean g\u1ecdi, ki\u1ec3u never \u0111\u1ea1i di\u1ec7n cho lo\u1ea1i gi\u00e1 tr\u1ecb kh\u00f4ng bao gi\u1edd x\u1ea3y ra. V\u00ed d\u1ee5: m\u1ed9t h\u00e0m kh\u00f4ng bao gi\u1edd tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb ho\u1eb7c lu\u00f4n \u0111\u01b0a ra m\u1ed9t ngo\u1ea1i l\u1ec7 c\u00f3 th\u1ec3 \u0111\u00e1nh d\u1ea5u ki\u1ec3u tr\u1ea3 v\u1ec1 c\u1ee7a n\u00f3 l\u00e0 never:<\/p>\n<pre class=\"wp-block-code\"><code>function error(message: string): never {\n\nthrow new Error(message);\n\n}<\/code><\/pre>\n<p>B\u1ea1n c\u00f3 th\u1ec3 th\u1eafc m\u1eafc t\u1ea1i sao ch\u00fang ta c\u1ea7n lo\u1ea1i \u2018never\u2019 khi ch\u00fang ta \u0111\u00e3 c\u00f3 \u2018void\u2019. M\u1eb7c d\u00f9 c\u1ea3 hai lo\u1ea1i tr\u00f4ng gi\u1ed1ng nhau, nh\u01b0ng ch\u00fang \u0111\u1ea1i di\u1ec7n cho hai kh\u00e1i ni\u1ec7m r\u1ea5t kh\u00e1c nhau.<\/p>\n<p>Void tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb kh\u00f4ng x\u00e1c \u0111\u1ecbnh trong JavaScript. Do \u0111\u00f3, m\u1eb7c d\u00f9 b\u1ea1n \u0111ang n\u00f3i r\u1eb1ng n\u00f3 kh\u00f4ng tr\u1ea3 v\u1ec1 b\u1ea5t c\u1ee9 th\u1ee9 g\u00ec, nh\u01b0ng n\u00f3 \u0111ang tr\u1ea3 v\u1ec1 \u2018kh\u00f4ng x\u00e1c \u0111\u1ecbnh\u2019. Ch\u00fang ta th\u01b0\u1eddng b\u1ecf qua gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 trong nh\u1eefng tr\u01b0\u1eddng h\u1ee3p n\u00e0y. H\u00e0m nh\u01b0 v\u1eady \u0111\u01b0\u1ee3c suy ra l\u00e0 c\u00f3 ki\u1ec3u tr\u1ea3 v\u1ec1 void trong TypeScript:<\/p>\n<pre class=\"wp-block-code\"><code>\/\/ This function returns undefined\n\nfunction greet(name: string) {\n\nconsole.log(`Hello, ${name}`);\n\n}\n\nlet greeting = greet(\"David\");\n\nconsole.log(greeting);\u00a0 \/\/ undefined<\/code><\/pre>\n<p>Ng\u01b0\u1ee3c l\u1ea1i, m\u1ed9t h\u00e0m c\u00f3 ki\u1ec3u never s\u1ebd kh\u00f4ng bao gi\u1edd tr\u1ea3 v\u1ec1. C\u00f3 2 tr\u01b0\u1eddng h\u1ee3p h\u00e0m tr\u1ea3 v\u1ec1 kh\u00f4ng bao gi\u1edd g\u00f5:<\/p>\n<ul>\n<li>Trong m\u1ed9t v\u00f2ng l\u1eb7p kh\u00f4ng h\u1ed3i k\u1ebft, v\u00ed d\u1ee5: m\u1ed9t v\u00f2ng l\u1eb7p lo\u1ea1i while(true){}.<\/li>\n<li>M\u1ed9t h\u00e0m \u0111\u01b0a ra l\u1ed7i, v\u00ed d\u1ee5: function foo(){throw new Exception(\u2018Th\u00f4ng b\u00e1o l\u1ed7i\u2019)}<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\" id=\"h-9-gi\u1ea3i-thich-cach-enums-lam-vi\u1ec7c-trong-typescript\"><strong>9. Gi\u1ea3i th\u00edch c\u00e1ch enums l\u00e0m vi\u1ec7c trong Typescript\u00a0<\/strong><\/h3>\n<p>Enums trong Typescript cho ph\u00e9p b\u1ea1n x\u00e1c \u0111\u1ecbnh m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c h\u1eb1ng s\u1ed1 \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean. Ch\u00fang cung c\u1ea5p c\u00e1ch \u0111\u1ec3 t\u1ea1o m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c gi\u00e1 tr\u1ecb c\u00f3 li\u00ean quan v\u1edbi \u00fd ngh\u0129a ng\u1eef ngh\u0129a. Enums r\u1ea5t h\u1eefu \u00edch khi b\u1ea1n c\u00f3 m\u1ed9t bi\u1ebfn ch\u1ec9 c\u00f3 th\u1ec3 nh\u1eadn m\u1ed9t trong s\u1ed1 c\u00e1c gi\u00e1 tr\u1ecb gi\u1edbi h\u1ea1n. Theo m\u1eb7c \u0111\u1ecbnh, enum \u00e1nh x\u1ea1 c\u00e1c gi\u00e1 tr\u1ecb c\u1ee7a ch\u00fang th\u00e0nh c\u00e1c h\u1eb1ng s\u1ed1, nh\u01b0ng b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 t\u00f9y ch\u1ec9nh c\u00e1c gi\u00e1 tr\u1ecb c\u01a1 b\u1ea3n.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-10-toan-t\u1eed-typeof-la-gi-no-d\u01b0\u1ee3c-s\u1eed-d\u1ee5ng-trong-typescript-nh\u01b0-th\u1ebf-nao\"><strong>10. To\u00e1n t\u1eed typeof l\u00e0 g\u00ec? N\u00f3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong Typescript nh\u01b0 th\u1ebf n\u00e0o?\u00a0<\/strong><\/h3>\n<p>To\u00e1n t\u1eed typeof trong Typescript \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 l\u1ea5y th\u00f4ng tin lo\u1ea1i c\u1ee7a m\u1ed9t bi\u1ebfn, h\u00e0m ho\u1eb7c \u0111\u1ed1i t\u01b0\u1ee3ng t\u1ea1i th\u1eddi \u0111i\u1ec3m bi\u00ean d\u1ecbch. N\u00f3 tr\u1ea3 v\u1ec1 m\u1ed9t chu\u1ed7i \u0111\u1ea1i di\u1ec7n c\u1ee7a lo\u1ea1i. To\u00e1n t\u1eed typeof c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng v\u1edbi c\u00e1c bi\u1ebfn, h\u00e0m ho\u1eb7c th\u1eadm ch\u00ed v\u1edbi c\u00e1c chu\u1ed7i k\u00fd t\u1ef1 \u0111\u1ec3 suy lu\u1eadn ho\u1eb7c ki\u1ec3m tra lo\u1ea1i bi\u1ec3u th\u1ee9c. N\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c b\u1ed9 b\u1ea3o v\u1ec7 type v\u00e0 ki\u1ec3m tra th\u1eddi gian ch\u1ea1y.<\/p>\n<h2 class=\"wp-block-heading\" id=\"h-cau-h\u1ecfi-ph\u1ecfng-v\u1ea5n-typescript-cho-ng\u01b0\u1eddi-co-kinh-nghi\u1ec7m\"><strong>C\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Typescript cho ng\u01b0\u1eddi c\u00f3 kinh nghi\u1ec7m\u00a0<\/strong><\/h2>\n<h3 class=\"wp-block-heading\" id=\"h-11-gi\u1ea3i-thich-cac-bi\u1ebfn-th\u1ec3-khac-nhau-trong-vong-l\u1eb7p-c\u1ee7a-typescript\"><strong>11. Gi\u1ea3i th\u00edch c\u00e1c bi\u1ebfn th\u1ec3 kh\u00e1c nhau trong v\u00f2ng l\u1eb7p c\u1ee7a Typescript<\/strong><\/h3>\n<p>Trong Typescript, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c bi\u1ebfn th\u1ec3 v\u00f2ng l\u1eb7p kh\u00e1c nhau nh\u01b0 for, while v\u00e0 do-while \u0111\u1ec3 th\u1ef1c hi\u1ec7n c\u00e1c thao t\u00e1c l\u1eb7p. C\u00e1c v\u00f2ng l\u1eb7p n\u00e0y ho\u1ea1t \u0111\u1ed9ng t\u01b0\u01a1ng t\u1ef1 nh\u01b0 c\u00e1c v\u00f2ng l\u1eb7p trong c\u00e1c ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh kh\u00e1c v\u00e0 cho ph\u00e9p b\u1ea1n l\u1eb7p l\u1ea1i m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c c\u00e2u l\u1ec7nh d\u1ef1a tr\u00ean m\u1ed9t \u0111i\u1ec1u ki\u1ec7n. Vi\u1ec7c l\u1ef1a ch\u1ecdn v\u00f2ng l\u1eb7p ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c y\u00eau c\u1ea7u c\u1ee5 th\u1ec3 c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh c\u1ee7a b\u1ea1n v\u00e0 logic l\u1eb7p m\u00e0 b\u1ea1n c\u1ea7n th\u1ef1c hi\u1ec7n.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-12-gi\u1ea3i-thich-ki\u1ec3u-symbol-trong-typescript\"><strong>12. Gi\u1ea3i th\u00edch ki\u1ec3u symbol trong Typescript<\/strong><\/h3>\n<p>Ki\u1ec3u symbol trong Typescript \u0111\u1ea1i di\u1ec7n cho c\u00e1c gi\u00e1 tr\u1ecb duy nh\u1ea5t v\u00e0 b\u1ea5t bi\u1ebfn c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u00e0m kh\u00f3a thu\u1ed9c t\u00ednh trong c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng. C\u00e1c k\u00fd hi\u1ec7u th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh c\u00e1c k\u00fd hi\u1ec7u n\u1ed5i ti\u1ebfng, l\u00e0 c\u00e1c k\u00fd hi\u1ec7u \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh tr\u01b0\u1edbc \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng b\u1edfi c\u00e1c t\u00ednh n\u0103ng JavaScript t\u00edch h\u1ee3p. C\u00e1c symbol cung c\u1ea5p c\u00e1ch \u0111\u1ec3 t\u1ea1o c\u00e1c thu\u1ed9c t\u00ednh ri\u00eang t\u01b0 ho\u1eb7c \u1ea9n trong c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng v\u00e0 ng\u0103n xung \u0111\u1ed9t t\u00ean.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-13-type-inference-trong-typescript-nghia-la-gi\"><strong>13. Type inference trong Typescript ngh\u0129a l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>Type inference trong Typescript \u0111\u1ec1 c\u1eadp \u0111\u1ebfn kh\u1ea3 n\u0103ng c\u1ee7a tr\u00ecnh bi\u00ean d\u1ecbch t\u1ef1 \u0111\u1ed9ng x\u00e1c \u0111\u1ecbnh lo\u1ea1i bi\u1ebfn d\u1ef1a tr\u00ean c\u00e1ch s\u1eed d\u1ee5ng v\u00e0 gi\u00e1 tr\u1ecb \u0111\u01b0\u1ee3c g\u00e1n c\u1ee7a n\u00f3. N\u00f3 lo\u1ea1i b\u1ecf nhu c\u1ea7u ch\u00fa th\u00edch r\u00f5 r\u00e0ng c\u00e1c lo\u1ea1i trong nhi\u1ec1u tr\u01b0\u1eddng h\u1ee3p, l\u00e0m cho m\u00e3 ng\u1eafn g\u1ecdn v\u00e0 d\u1ec5 \u0111\u1ecdc h\u01a1n. Type inference gi\u00fap ph\u00e1t hi\u1ec7n c\u00e1c l\u1ed7i li\u00ean quan \u0111\u1ebfn ki\u1ec3u trong qu\u00e1 tr\u00ecnh bi\u00ean d\u1ecbch.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-14-m\u1ee5c-dich-c\u1ee7a-noimplicitany-la-gi\"><strong>14. M\u1ee5c \u0111\u00edch c\u1ee7a noImplicitAny l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>noImplicitAny trong Typescript cho ph\u00e9p ki\u1ec3m tra nghi\u00eam ng\u1eb7t \u0111\u1ed1i v\u1edbi b\u1ea5t k\u1ef3 lo\u1ea1i ng\u1ea7m \u0111\u1ecbnh n\u00e0o. Khi \u0111\u01b0\u1ee3c b\u1eadt, tr\u00ecnh bi\u00ean d\u1ecbch s\u1ebd \u0111\u01b0a ra l\u1ed7i n\u1ebfu n\u00f3 kh\u00f4ng th\u1ec3 suy ra lo\u1ea1i bi\u1ebfn v\u00e0 kh\u00f4ng c\u00f3 ch\u00fa th\u00edch lo\u1ea1i n\u00e0o \u0111\u01b0\u1ee3c cung c\u1ea5p. N\u00f3 khuy\u1ebfn kh\u00edch c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n hi\u1ec3u r\u00f5 r\u00e0ng v\u1ec1 c\u00e1c lo\u1ea1i v\u00e0 gi\u00fap ng\u0103n ch\u1eb7n vi\u1ec7c s\u1eed d\u1ee5ng kh\u00f4ng ch\u1ee7 \u00fd b\u1ea5t k\u1ef3 lo\u1ea1i n\u00e0o, d\u1eabn \u0111\u1ebfn m\u00e3 hi\u1ec7u qu\u1ea3 h\u01a1n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-15-gi\u1ea3i-thich-cac-cach-khac-nhau-d\u1ec3-ki\u1ec3m-soat-member-visibility-trong-typescript\"><strong>15. Gi\u1ea3i th\u00edch c\u00e1c c\u00e1ch kh\u00e1c nhau \u0111\u1ec3 ki\u1ec3m so\u00e1t member visibility trong Typescript<\/strong><\/h3>\n<p>Trong Typescript, b\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m so\u00e1t kh\u1ea3 n\u0103ng hi\u1ec3n th\u1ecb c\u1ee7a th\u00e0nh vi\u00ean b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i quy\u1ec1n truy c\u1eadp nh\u01b0 c\u00f4ng khai, ri\u00eang t\u01b0 v\u00e0 \u0111\u01b0\u1ee3c b\u1ea3o v\u1ec7. C\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i c\u00f4ng khai cho ph\u00e9p b\u1ea1n truy c\u1eadp kh\u00f4ng h\u1ea1n ch\u1ebf v\u00e0o th\u00e0nh vi\u00ean t\u1eeb m\u1ecdi n\u01a1i.\u00a0<\/p>\n<p>C\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i ri\u00eang h\u1ea1n ch\u1ebf quy\u1ec1n truy c\u1eadp b\u00ean trong l\u1edbp ch\u1ee9a, trong khi c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i \u0111\u01b0\u1ee3c b\u1ea3o v\u1ec7 cho ph\u00e9p truy c\u1eadp b\u00ean trong l\u1edbp ch\u1ee9a v\u00e0 c\u00e1c l\u1edbp con c\u1ee7a n\u00f3. B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i n\u00e0y, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c thi \u0111\u00f3ng g\u00f3i v\u00e0 x\u00e1c \u0111\u1ecbnh ph\u1ea1m vi hi\u1ec3n th\u1ecb c\u1ee7a c\u00e1c th\u00e0nh vi\u00ean l\u1edbp.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-16-typescript-co-h\u1ed7-tr\u1ee3-l\u1edbp-static-static-classes-khong-n\u1ebfu-khong-hay-gi\u1ea3i-thich-t\u1ea1i-sao\"><strong>16. Typescript c\u00f3 h\u1ed7 tr\u1ee3 l\u1edbp static (static classes) kh\u00f4ng? N\u1ebfu kh\u00f4ng, h\u00e3y gi\u1ea3i th\u00edch t\u1ea1i sao<\/strong><\/h3>\n<p>Kh\u00f4ng, Typescript kh\u00f4ng h\u1ed7 tr\u1ee3 tr\u1ef1c ti\u1ebfp c\u00e1c static classes. Tuy nhi\u00ean, b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ea1t \u0111\u01b0\u1ee3c mong mu\u1ed1n t\u01b0\u01a1ng t\u1ef1 b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c static trong m\u1ed9t l\u1edbp th\u00f4ng th\u01b0\u1eddng.\u00a0<\/p>\n<p>Typescript khuy\u1ebfn kh\u00edch s\u1eed d\u1ee5ng c\u00e1c static component \u0111\u1ec3 cung c\u1ea5p c\u00e1c h\u00e0m ti\u1ec7n \u00edch ho\u1eb7c h\u1eb1ng s\u1ed1 \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi m\u1ed9t l\u1edbp nh\u01b0ng kh\u00f4ng y\u00eau c\u1ea7u truy c\u1eadp m\u1ed9t th\u1ec3 hi\u1ec7n. C\u00e1ch ti\u1ebfp c\u1eadn n\u00e0y th\u00fac \u0111\u1ea9y t\u00ednh m\u00f4 \u0111un v\u00e0 kh\u1ea3 n\u0103ng s\u1eed d\u1ee5ng l\u1ea1i m\u00e3.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-17-contextual-typing-la-gi\"><strong>17. Contextual typing l\u00e0 g\u00ec?\u00a0<\/strong><\/h3>\n<p>Contextual typing trong Typescript l\u00e0 qu\u00e1 tr\u00ecnh suy lu\u1eadn lo\u1ea1i bi\u1ec3u th\u1ee9c d\u1ef1a tr\u00ean ng\u1eef c\u1ea3nh xung quanh. N\u00f3 cho ph\u00e9p b\u1ea1n d\u1ef1a v\u00e0o lo\u1ea1i d\u1ef1 ki\u1ebfn c\u1ee7a m\u1ed9t gi\u00e1 tr\u1ecb \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh lo\u1ea1i th\u1ef1c t\u1ebf c\u1ee7a n\u00f3. Contextual typing \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch trong c\u00e1c tr\u01b0\u1eddng h\u1ee3p m\u00e0 suy lu\u1eadn ki\u1ec3u s\u1ebd th\u1ea5t b\u1ea1i ho\u1eb7c khi l\u00e0m vi\u1ec7c v\u1edbi h\u1ec7 th\u1ed1ng ph\u00e2n c\u1ea5p ki\u1ec3u ph\u1ee9c t\u1ea1p.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-18-ki\u1ec3u-alias-alias-type-la-gi-lam-th\u1ebf-nao-d\u1ec3-t\u1ea1o-m\u1ed9t-ki\u1ec3u-alias\"><strong>18. Ki\u1ec3u alias (alias type) l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u1ea1o m\u1ed9t ki\u1ec3u alias?\u00a0<\/strong><\/h3>\n<p>Ki\u1ec3u alias l\u00e0 m\u1ed9t c\u00e1ch \u0111\u1ec3 t\u1ea1o t\u00ean m\u1edbi cho lo\u1ea1i hi\u1ec7n c\u00f3 trong Typescript. N\u00f3 cung c\u1ea5p m\u1ed9t c\u00e1ch thu\u1eadn ti\u1ec7n \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh c\u00e1c lo\u1ea1i ph\u1ee9c t\u1ea1p ho\u1eb7c d\u00e0i d\u00f2ng v\u00e0 l\u00e0m cho m\u00e3 d\u1ec5 \u0111\u1ecdc h\u01a1n.\u00a0<\/p>\n<p>B\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o ki\u1ec3u alias b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng t\u1eeb kh\u00f3a ki\u1ec3u, theo sau l\u00e0 t\u00ean mong mu\u1ed1n v\u00e0 \u0111\u1ecbnh ngh\u0129a ki\u1ec3u t\u01b0\u01a1ng \u1ee9ng. V\u00ed d\u1ee5: nh\u1eadp MyAlias = string | con s\u1ed1; t\u1ea1o ki\u1ec3u alias MyAlias \u0111\u1ea1i di\u1ec7n cho m\u1ed9t chu\u1ed7i ho\u1eb7c m\u1ed9t s\u1ed1.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-19-lam-th\u1ebf-nao-d\u1ec3-th\u1ef1c-hi\u1ec7n-ki\u1ec3m-tra-null-trong-typescript\"><strong>19. L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 th\u1ef1c hi\u1ec7n ki\u1ec3m tra null trong Typescript?\u00a0<\/strong><\/h3>\n<p>Trong Typescript, b\u1ea1n c\u00f3 th\u1ec3 th\u1ef1c hi\u1ec7n ki\u1ec3m tra null b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng to\u00e1n t\u1eed k\u1ebft h\u1ee3p nullish (??) v\u00e0 to\u00e1n t\u1eed chu\u1ed7i t\u00f9y ch\u1ecdn (?). To\u00e1n t\u1eed k\u1ebft h\u1ee3p nullish cho ph\u00e9p b\u1ea1n cung c\u1ea5p m\u1ed9t gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh khi m\u1ed9t bi\u1ebfn l\u00e0 null ho\u1eb7c kh\u00f4ng x\u00e1c \u0111\u1ecbnh.\u00a0<\/p>\n<p>To\u00e1n t\u1eed x\u00e2u chu\u1ed7i t\u00f9y ch\u1ecdn cho ph\u00e9p b\u1ea1n truy c\u1eadp c\u00e1c thu\u1ed9c t\u00ednh ho\u1eb7c ph\u01b0\u01a1ng th\u1ee9c l\u1ed3ng nhau m\u1ed9t c\u00e1ch an to\u00e0n m\u00e0 kh\u00f4ng g\u00e2y ra l\u1ed7i th\u1eddi gian ch\u1ea1y n\u1ebfu b\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb trung gian n\u00e0o l\u00e0 null ho\u1eb7c kh\u00f4ng x\u00e1c \u0111\u1ecbnh.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-20-li\u1ec7t-ke-m\u1ed9t-s\u1ed1-lo\u1ea1i-utility-ma-typescript-cung-c\u1ea5p-va-gi\u1ea3i-thich-cach-s\u1eed-d\u1ee5ng-chung\"><strong>20. Li\u1ec7t k\u00ea m\u1ed9t s\u1ed1 lo\u1ea1i utility m\u00e0 Typescript cung c\u1ea5p v\u00e0 gi\u1ea3i th\u00edch c\u00e1ch s\u1eed d\u1ee5ng ch\u00fang<\/strong><\/h3>\n<p>Typescript cung c\u1ea5p m\u1ed9t s\u1ed1 lo\u1ea1i ti\u1ec7n \u00edch gi\u00fap n\u00e2ng cao h\u1ec7 th\u1ed1ng lo\u1ea1i v\u00e0 cung c\u1ea5p c\u00e1c t\u00ednh n\u0103ng h\u1eefu \u00edch. M\u1ed9t s\u1ed1 lo\u1ea1i ti\u1ec7n \u00edch th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng bao g\u1ed3m Partial&lt;T&gt;, Required&lt;T&gt;, Pick&lt;T, K&gt; v\u00e0 Omit&lt;T, K&gt;.\u00a0<\/p>\n<p>C\u00e1c lo\u1ea1i n\u00e0y cho ph\u00e9p b\u1ea1n t\u1ea1o c\u00e1c ki\u1ec3u m\u1edbi d\u1ef1a tr\u00ean c\u00e1c ki\u1ec3u hi\u1ec7n c\u00f3 b\u1eb1ng c\u00e1ch s\u1eeda \u0111\u1ed5i ho\u1eb7c tr\u00edch xu\u1ea5t c\u00e1c thu\u1ed9c t\u00ednh nh\u1ea5t \u0111\u1ecbnh. Ch\u00fang cung c\u1ea5p c\u00e1c c\u00f4ng c\u1ee5 m\u1ea1nh m\u1ebd \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c c\u1ea5u tr\u00fac d\u1eef li\u1ec7u ph\u1ee9c t\u1ea1p v\u00e0 \u0111\u1ea3m b\u1ea3o an to\u00e0n cho ki\u1ec3u d\u1eef li\u1ec7u.<\/p>\n<h2 class=\"wp-block-heading\"><strong>K\u1ebft lu\u1eadn<\/strong><\/h2>\n<p>V\u1eady l\u00e0 Masterskills \u0111\u00e3 c\u00f9ng b\u1ea1n t\u00ecm hi\u1ec3u c\u00e1c <strong>c\u00e2u h\u1ecfi ph\u1ecfng v\u1ea5n Typescript<\/strong> th\u01b0\u1eddng g\u1eb7p nh\u1ea5t. Hy v\u1ecdng nh\u1eefng g\u1ee3i \u00fd tr\u00ean s\u1ebd gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng \u00e1p d\u1ee5ng kinh nghi\u1ec7m v\u00e0 ki\u1ebfn th\u1ee9c c\u1ee7a b\u1ea3n th\u00e2n v\u00e0o t\u1eebng c\u00e2u tr\u1ea3 l\u1eddi. <\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>B\u1ea1n \u0111ang chu\u1ea9n b\u1ecb cho m\u1ed9t cu\u1ed9c ph\u1ecfng v\u1ea5n Typescript v\u00e0 t\u00ecm ki\u1ebfm m\u1ed9t s\u1ed1 th\u00f4ng tin chi ti\u1ebft h\u1eefu \u00edch? Typescript tr\u1edf n\u00ean v\u00f4 c\u00f9ng ph\u1ed5 bi\u1ebfn \u0111\u1ed1i v\u1edbi c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n nh\u1edd kh\u1ea3 n\u0103ng th\u00eam ki\u1ec3u g\u00f5 t\u0129nh v\u00e0o JavaScript, d\u1eabn \u0111\u1ebfn m\u00e3 m\u1ea1nh m\u1ebd h\u01a1n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. \u0110\u1ec3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[181],"tags":[],"_links":{"self":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts\/49965"}],"collection":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/comments?post=49965"}],"version-history":[{"count":0,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/posts\/49965\/revisions"}],"wp:attachment":[{"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/media?parent=49965"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/categories?post=49965"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/masterskills.org\/blog\/wp-json\/wp\/v2\/tags?post=49965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}