{"id":8797,"date":"2025-03-07T10:28:28","date_gmt":"2025-03-07T03:28:28","guid":{"rendered":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/?p=8797"},"modified":"2025-03-07T10:29:07","modified_gmt":"2025-03-07T03:29:07","slug":"typescript-la-gi","status":"publish","type":"post","link":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/tu-van-nghe-nghiep\/typescript-la-gi","title":{"rendered":"TypeScript l\u00e0 g\u00ec? T\u00ecm hi\u1ec3u \u01afu v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a TypeScript"},"content":{"rendered":"\n
TypeScript l\u00e0 m\u1ed9t thu\u1eadt ng\u1eef kh\u00e1 quen thu\u1ed9c trong l\u0129nh v\u1ef1c l\u1eadp tr\u00ecnh, \u0111\u1eb7c bi\u1ec7t l\u00e0 v\u1edbi nh\u1eefng ai l\u00e0m vi\u1ec7c li\u00ean quan \u0111\u1ebfn ph\u00e1t tri\u1ec3n web v\u00e0 \u1ee9ng d\u1ee5ng. Th\u1ebf nh\u01b0ng, v\u1eabn c\u00f2n kh\u00e1 nhi\u1ec1u b\u1ea1n ch\u01b0a th\u1ef1c s\u1ef1 hi\u1ec3u r\u00f5 TypeScript l\u00e0 g\u00ec <\/strong>v\u00e0 n\u00f3 mang l\u1ea1i l\u1ee3i \u00edch nh\u01b0 th\u1ebf n\u00e0o khi ph\u00e1t tri\u1ec3n c\u00e1c d\u1ef1 \u00e1n ph\u1ea7n m\u1ec1m? N\u1ebfu b\u1ea1n c\u0169ng \u0111ang quan t\u00e2m \u0111\u1ebfn kh\u00e1i ni\u1ec7m n\u00e0y, h\u00e3y c\u00f9ng kh\u00e1m ph\u00e1 chi ti\u1ebft qua b\u00e0i vi\u1ebft d\u01b0\u1edbi \u0111\u00e2y nh\u00e9.<\/p>\n\n\n TypeScript l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh \u0111\u01b0\u1ee3c ph\u00e1t tri\u1ec3n b\u1edfi Microsoft, nh\u1eb1m m\u1ee5c \u0111\u00edch m\u1edf r\u1ed9ng v\u00e0 c\u1ea3i thi\u1ec7n JavaScript. N\u00f3 l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef m\u00e3 ngu\u1ed3n m\u1edf, mi\u1ec5n ph\u00ed v\u00e0 thu\u1eadn ti\u1ec7n, \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf \u0111\u1ec3 gi\u00fap c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng l\u1edbn v\u00e0 ph\u1ee9c t\u1ea1p d\u1ec5 d\u00e0ng h\u01a1n.<\/strong><\/p>\n<\/blockquote>\n\n\n\n TypeScript mang \u0111\u1ebfn nhi\u1ec1u t\u00ednh n\u0103ng h\u1eefu \u00edch gi\u00fap c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n t\u1ea1o ra m\u00e3 ngu\u1ed3n ch\u1ea5t l\u01b0\u1ee3ng cao v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 nh\u1eefng t\u00ednh n\u0103ng n\u1ed5i b\u1eadt c\u1ee7a TypeScript.<\/p>\n\n\n\n Null Checking l\u00e0 m\u1ed9t t\u00ednh n\u0103ng quan tr\u1ecdng c\u1ee7a TypeScript, gi\u00fap c\u00e1c nh\u00e0 ph\u00e1t tri\u1ec3n tr\u00e1nh \u0111\u01b0\u1ee3c l\u1ed7i Null ho\u1eb7c Undefined trong m\u00e3 ngu\u1ed3n. TypeScript cung c\u1ea5p c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u nh\u01b0 Vi\u1ec7c s\u1eed d\u1ee5ng Null Checking gi\u00fap b\u1ea1n x\u00e1c \u0111\u1ecbnh r\u00f5 r\u00e0ng khi n\u00e0o m\u1ed9t bi\u1ebfn c\u00f3 th\u1ec3 l\u00e0 T\u00ednh n\u0103ng n\u00e0y \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn, n\u01a1i m\u00e0 vi\u1ec7c qu\u1ea3n l\u00fd gi\u00e1 tr\u1ecb Generic TypeScript l\u00e0 g\u00ec? Generics l\u00e0 t\u00ednh n\u0103ng m\u1ea1nh m\u1ebd c\u1ee7a TypeScript, cho ph\u00e9p t\u1ea1o h\u00e0m, l\u1edbp v\u00e0 giao di\u1ec7n l\u00e0m vi\u1ec7c v\u1edbi nhi\u1ec1u ki\u1ec3u d\u1eef li\u1ec7u m\u00e0 kh\u00f4ng c\u1ea7n vi\u1ebft m\u00e3 l\u1ea1i. N\u00f3 gi\u00fap m\u00e3 linh ho\u1ea1t, t\u00e1i s\u1eed d\u1ee5ng v\u00e0 gi\u1eef an to\u00e0n ki\u1ec3u d\u1eef li\u1ec7u.<\/p>\n\n\n\n V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o h\u00e0m generic \u0111\u1ec3 tr\u1ea3 v\u1ec1 danh s\u00e1ch c\u00e1c ph\u1ea7n t\u1eed c\u00f9ng lo\u1ea1i, \u00e1p d\u1ee5ng cho s\u1ed1, chu\u1ed7i ho\u1eb7c b\u1ea5t k\u1ef3 ki\u1ec3u n\u00e0o kh\u00e1c, gi\u1ea3m l\u1eb7p l\u1ea1i v\u00e0 d\u1ec5 duy tr\u00ec.<\/p>\n\n\n\n Generics c\u0169ng gi\u00fap tr\u00e1nh l\u1ed7i ki\u1ec3u d\u1eef li\u1ec7u, v\u00ec TypeScript ki\u1ec3m tra c\u00e1c tham s\u1ed1 generic, t\u0103ng \u0111\u1ed9 tin c\u1eady cho m\u00e3 ngu\u1ed3n.<\/p>\n\n\n\n Access Modifiers<\/strong><\/p>\n\n\n\n Access Modifiers (public, private, protected) l\u00e0 m\u1ed9t t\u00ednh n\u0103ng quan tr\u1ecdng c\u1ee7a TypeScript, gi\u00fap b\u1ea1n ki\u1ec3m so\u00e1t quy\u1ec1n truy c\u1eadp v\u00e0o c\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a m\u1ed9t l\u1edbp. TypeScript h\u1ed7 tr\u1ee3 ba lo\u1ea1i Access Modifiers ch\u00ednh: Vi\u1ec7c s\u1eed d\u1ee5ng Access Modifiers gi\u00fap b\u1ea1n b\u1ea3o v\u1ec7 t\u00ednh to\u00e0n v\u1eb9n c\u1ee7a m\u00e3 ngu\u1ed3n, \u0111\u1ea3m b\u1ea3o r\u1eb1ng c\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c nh\u1ea1y c\u1ea3m kh\u00f4ng b\u1ecb thay \u0111\u1ed5i t\u1eeb b\u00ean ngo\u00e0i. \u0110i\u1ec1u n\u00e0y \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn, n\u01a1i m\u00e0 vi\u1ec7c qu\u1ea3n l\u00fd quy\u1ec1n truy c\u1eadp tr\u1edf n\u00ean ph\u1ee9c t\u1ea1p h\u01a1n.<\/p>\n\n\n\n Namespaces trong TypeScript gi\u00fap b\u1ea1n t\u1ed5 ch\u1ee9c v\u00e0 qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n c\u1ee7a m\u00ecnh m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3 h\u01a1n. Ch\u00fang cho ph\u00e9p b\u1ea1n nh\u00f3m c\u00e1c ph\u1ea7n t\u1eed m\u00e3 ngu\u1ed3n li\u00ean quan v\u1edbi nhau v\u00e0o m\u1ed9t kh\u00f4ng gian t\u00ean ri\u00eang bi\u1ec7t, gi\u1ea3m thi\u1ec3u nguy c\u01a1 xung \u0111\u1ed9t t\u00ean v\u00e0 gi\u00fap m\u00e3 ngu\u1ed3n d\u1ec5 hi\u1ec3u h\u01a1n.<\/p>\n\n\n\n V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng namespaces \u0111\u1ec3 nh\u00f3m c\u00e1c l\u1edbp, giao di\u1ec7n v\u00e0 h\u00e0m li\u00ean quan \u0111\u1ebfn m\u1ed9t t\u00ednh n\u0103ng c\u1ee5 th\u1ec3 c\u1ee7a \u1ee9ng d\u1ee5ng. \u0110i\u1ec1u n\u00e0y gi\u00fap b\u1ea1n d\u1ec5 d\u00e0ng t\u00ecm ki\u1ebfm v\u00e0 b\u1ea3o tr\u00ec m\u00e3 ngu\u1ed3n, \u0111\u1ed3ng th\u1eddi gi\u1ea3m thi\u1ec3u kh\u1ea3 n\u0103ng x\u1ea3y ra l\u1ed7i do xung \u0111\u1ed9t t\u00ean.<\/p>\n\n\n\n Namespaces c\u0169ng gi\u00fap b\u1ea1n t\u1ea1o ra c\u00e1c module nh\u1ecf h\u01a1n, d\u1ec5 qu\u1ea3n l\u00fd h\u01a1n, v\u00e0 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u1ea1i trong c\u00e1c ph\u1ea7n kh\u00e1c c\u1ee7a \u1ee9ng d\u1ee5ng. \u0110i\u1ec1u n\u00e0y l\u00e0m t\u0103ng t\u00ednh linh ho\u1ea1t v\u00e0 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng c\u1ee7a m\u00e3 ngu\u1ed3n.<\/p>\n\n\n\n Type Annotations l\u00e0 t\u00ednh n\u0103ng ch\u00ednh c\u1ee7a TypeScript, cho ph\u00e9p x\u00e1c \u0111\u1ecbnh ki\u1ec3u d\u1eef li\u1ec7u cho bi\u1ebfn, tham s\u1ed1 v\u00e0 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1. N\u00f3 h\u1ed7 tr\u1ee3 nhi\u1ec1u ki\u1ec3u nh\u01b0 s\u1ed1, chu\u1ed7i, boolean, m\u1ea3ng v\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng.<\/p>\n\n\n\n S\u1eed d\u1ee5ng Type Annotations gi\u00fap m\u00e3 an to\u00e0n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec, TypeScript s\u1ebd ki\u1ec3m tra ki\u1ec3u d\u1eef li\u1ec7u khi bi\u00ean d\u1ecbch, th\u00f4ng b\u00e1o l\u1ed7i n\u1ebfu kh\u00f4ng kh\u1edbp. \u0110i\u1ec1u n\u00e0y gi\u00fap ph\u00e1t hi\u1ec7n l\u1ed7i s\u1edbm h\u01a1n.<\/p>\n\n\n\n Type Annotations c\u00f2n gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 m\u00e3, cung c\u1ea5p th\u00f4ng tin v\u1ec1 ki\u1ec3u d\u1eef li\u1ec7u, l\u00e0m t\u0103ng t\u00ednh r\u00f5 r\u00e0ng v\u00e0 d\u1ec5 hi\u1ec3u.<\/p>\n\n\n\n TypeScript l\u00e0 ng\u00f4n ng\u1eef g\u00ec?<\/strong> TypeScript l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh c\u00f3 ki\u1ec3u t\u0129nh (Static Typing), ngh\u0129a l\u00e0 b\u1ea1n c\u00f3 th\u1ec3 x\u00e1c \u0111\u1ecbnh ki\u1ec3u d\u1eef li\u1ec7u c\u1ee7a c\u00e1c bi\u1ebfn, tham s\u1ed1 h\u00e0m v\u00e0 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 tr\u01b0\u1edbc khi ch\u1ea1y m\u00e3 ngu\u1ed3n. \u0110i\u1ec1u n\u00e0y gi\u00fap b\u1ea1n ph\u00e1t hi\u1ec7n v\u00e0 s\u1eeda l\u1ed7i s\u1edbm, tr\u01b0\u1edbc khi ch\u1ea1y m\u00e3 ngu\u1ed3n, v\u00e0 gi\u00fap m\u00e3 ngu\u1ed3n an to\u00e0n h\u01a1n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n.<\/p>\n\n\n\n Static Typing c\u0169ng gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n r\u00f5 r\u00e0ng h\u01a1n v\u00e0 d\u1ec5 hi\u1ec3u h\u01a1n, v\u00ec ki\u1ec3u d\u1eef li\u1ec7u c\u1ee7a c\u00e1c bi\u1ebfn v\u00e0 h\u00e0m \u0111\u01b0\u1ee3c x\u00e1c \u0111\u1ecbnh r\u00f5 r\u00e0ng. \u0110i\u1ec1u n\u00e0y l\u00e0m t\u0103ng t\u00ednh r\u00f5 r\u00e0ng v\u00e0 d\u1ec5 hi\u1ec3u c\u1ee7a m\u00e3 ngu\u1ed3n, gi\u00fap b\u1ea1n v\u00e0 c\u00e1c th\u00e0nh vi\u00ean trong nh\u00f3m d\u1ec5 d\u00e0ng h\u1ee3p t\u00e1c v\u00e0 b\u1ea3o tr\u00ec m\u00e3 ngu\u1ed3n.<\/p>\n\n\n\n TypeScript h\u1ed7 tr\u1ee3 m\u1ea1nh m\u1ebd l\u1eadp tr\u00ecnh h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng (OOP), cho ph\u00e9p b\u1ea1n t\u1ea1o ra c\u00e1c l\u1edbp, giao di\u1ec7n v\u00e0 \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u1ec3 x\u00e2y d\u1ef1ng m\u00e3 ngu\u1ed3n m\u1ed9t c\u00e1ch c\u00f3 c\u1ea5u tr\u00fac v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec. TypeScript h\u1ed7 tr\u1ee3 c\u00e1c t\u00ednh n\u0103ng OOP nh\u01b0 k\u1ebf th\u1eeba, \u0111a h\u00ecnh, v\u00e0 \u0111\u00f3ng g\u00f3i.<\/p>\n\n\n\n Vi\u1ec7c s\u1eed d\u1ee5ng OOP trong TypeScript gi\u00fap b\u1ea1n t\u1ea1o ra m\u00e3 ngu\u1ed3n c\u00f3 c\u1ea5u tr\u00fac, d\u1ec5 hi\u1ec3u v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec. \u0110i\u1ec1u n\u00e0y \u0111\u1eb7c bi\u1ec7t quan tr\u1ecdng trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn, n\u01a1i m\u00e0 vi\u1ec7c qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n tr\u1edf n\u00ean ph\u1ee9c t\u1ea1p h\u01a1n.<\/p>\n\n\n\n TypeScript c\u00f3 nhi\u1ec1u l\u1ee3i \u00edch n\u1ed5i b\u1eadt gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean t\u1ea1o m\u00e3 ngu\u1ed3n ch\u1ea5t l\u01b0\u1ee3ng v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 nh\u1eefng \u0111i\u1ec3m ch\u00ednh:<\/p>\n\n\n\n TypeScript l\u00e0 ng\u00f4n ng\u1eef m\u00e3 ngu\u1ed3n m\u1edf mi\u1ec5n ph\u00ed t\u1eeb Microsoft, d\u1ec5 d\u00e0ng t\u00edch h\u1ee3p v\u00e0o d\u1ef1 \u00e1n hi\u1ec7n t\u1ea1i v\u00e0 h\u1ed7 tr\u1ee3 nhi\u1ec1u c\u00f4ng c\u1ee5 ph\u1ed5 bi\u1ebfn nh\u01b0 React, Angular, Vue.<\/p>\n\n\n\n TypeScript cung c\u1ea5p Type Annotations v\u00e0 Static Typing gi\u00fap ph\u00e1t hi\u1ec7n l\u1ed7i tr\u01b0\u1edbc khi ch\u1ea1y m\u00e3, ti\u1ebft ki\u1ec7m th\u1eddi gian, \u0111\u1ed3ng th\u1eddi c\u00f3 c\u00f4ng c\u1ee5 h\u1ed7 tr\u1ee3 vi\u1ebft m\u00e3 hi\u1ec7u qu\u1ea3.<\/p>\n\n\n\n C\u00e1c t\u00ednh n\u0103ng c\u1ee7a TypeScript cho ph\u00e9p t\u00e1i c\u1ea5u tr\u00fac m\u00e3 ngu\u1ed3n m\u1ed9t c\u00e1ch an to\u00e0n v\u1edbi c\u00e1c c\u00f4ng c\u1ee5 h\u1ed7 tr\u1ee3.<\/p>\n\n\n\n TypeScript h\u1ed7 tr\u1ee3 t\u00ednh n\u0103ng ki\u1ec3m tra l\u1ed7i s\u1edbm, gi\u1ea3m thi\u1ec3u nguy c\u01a1 sai s\u00f3t trong h\u1ec7 th\u1ed1ng.<\/p>\n\n\n\n TypeScript gi\u00fap m\u00e3 ng\u1eafn g\u1ecdn, d\u1ec5 hi\u1ec3u, h\u1ea1n ch\u1ebf s\u1ef1 l\u1eb7p l\u1ea1i nh\u1edd c\u00e1c t\u00ednh n\u0103ng \u0111\u1ecbnh ngh\u0129a ki\u1ec3u d\u1eef li\u1ec7u r\u00f5 r\u00e0ng.<\/p>\n\n\n\n TypeScript t\u1ed5 ch\u1ee9c m\u00e3 hi\u1ec7u qu\u1ea3 v\u1edbi Namespaces v\u00e0 Modules, gi\u00fap gi\u1ea3m xung \u0111\u1ed9t t\u00ean v\u00e0 d\u1ec5 qu\u1ea3n l\u00fd.<\/p>\n\n\n\n TypeScript t\u1ed1i \u01b0u h\u00f3a quy tr\u00ecnh th\u00f4ng qua c\u00e1c t\u00ednh n\u0103ng n\u00e2ng cao v\u00e0 c\u00f4ng c\u1ee5 h\u1ed7 tr\u1ee3.<\/p>\n\n\n\n M\u1eb7c d\u00f9 TypeScript c\u00f3 nhi\u1ec1u \u01b0u \u0111i\u1ec3m, nh\u01b0ng c\u0169ng c\u00f3 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ea7n l\u01b0u \u00fd:<\/p>\n\n\n\n TypeScript c\u1ea7n bi\u00ean d\u1ecbch th\u00e0nh JavaScript tr\u01b0\u1edbc khi ch\u1ea1y, g\u00e2y th\u00eam b\u01b0\u1edbc trong quy tr\u00ecnh l\u00e0m vi\u1ec7c.<\/p>\n\n\n\n C\u00e0i \u0111\u1eb7t ban \u0111\u1ea7u c\u00f3 th\u1ec3 ph\u1ee9c t\u1ea1p, y\u00eau c\u1ea7u b\u1ea1n h\u1ecdc c\u00e1c c\u00fa ph\u00e1p m\u1edbi.<\/p>\n\n\n\n TypeScript kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng \u0111\u1ed9c l\u1eadp v\u00e0 ph\u1ee5 thu\u1ed9c v\u00e0o JavaScript, n\u00ean v\u1eabn ph\u1ea3i tu\u00e2n theo quy t\u1eafc c\u1ee7a n\u00f3.<\/p>\n\n\n\n TypeScript c\u00f3 ph\u1ea3i l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf kh\u00f4ng?<\/strong><\/p>\n\n\n\n TypeScript l\u00e0 ng\u00f4n ng\u1eef m\u00e3 ngu\u1ed3n m\u1edf, cho ph\u00e9p b\u1ea1n s\u1eed d\u1ee5ng, s\u1eeda \u0111\u1ed5i v\u00e0 ph\u00e2n ph\u1ed1i t\u1ef1 do. \u0110\u01b0\u1ee3c ph\u00e1t tri\u1ec3n b\u1edfi Microsoft, TypeScript \u0111\u01b0\u1ee3c qu\u1ea3n l\u00fd b\u1edfi c\u1ed9ng \u0111\u1ed3ng m\u00e3 ngu\u1ed3n m\u1edf, ai c\u0169ng c\u00f3 th\u1ec3 g\u00f3p s\u1ee9c v\u00e0o qu\u00e1 tr\u00ecnh ph\u00e1t tri\u1ec3n.<\/p>\n\n\n\n Khi l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf, TypeScript mang l\u1ea1i t\u00ednh minh b\u1ea1ch cao. M\u00e3 ngu\u1ed3n c\u00f3 s\u1eb5n tr\u00ean GitHub \u0111\u1ec3 theo d\u00f5i ph\u00e1t tri\u1ec3n v\u00e0 tham gia th\u1ea3o lu\u1eadn.T\u1ea1o th\u00eam t\u00e0i li\u1ec7u, di\u1ec5n \u0111\u00e0n gi\u00fap ng\u01b0\u1eddi d\u00f9ng d\u1ec5 d\u00e0ng h\u1ecdc h\u1ecfi v\u00e0 chia s\u1ebb kinh nghi\u1ec7m.<\/p>\n\n\n\n S\u1eed d\u1ee5ng TypeScript, b\u1ea1n c\u00f3 th\u1ec3 t\u00f9y ch\u1ec9nh m\u00e3 ngu\u1ed3n theo nhu c\u1ea7u ri\u00eang, ph\u00e1t tri\u1ec3n c\u00f4ng c\u1ee5 v\u00e0 th\u01b0 vi\u1ec7n m\u1edbi m\u00e0 kh\u00f4ng b\u1ecb ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t c\u00f4ng ty n\u00e0o. Ngay c\u1ea3 khi ch\u00ednh s\u00e1ch Microsoft thay \u0111\u1ed5i, c\u1ed9ng \u0111\u1ed3ng v\u1eabn duy tr\u00ec n\u00f3.<\/p>\n\n\n\n M\u00e3 ngu\u1ed3n m\u1edf mang l\u1ea1i s\u1ef1 an to\u00e0n h\u01a1n. Nhi\u1ec1u ng\u01b0\u1eddi ki\u1ec3m tra v\u00e0 ph\u00e1t hi\u1ec7n l\u1ed7i nhanh ch\u00f3ng, gi\u00fap TypeScript \u1ed5n \u0111\u1ecbnh v\u00e0 an to\u00e0n cho d\u1ef1 \u00e1n l\u1edbn. \u0110\u1eb7c bi\u1ec7t, l\u1ed7 h\u1ed5ng b\u1ea3o m\u1eadt c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c kh\u1eafc ph\u1ee5c k\u1ecbp th\u1eddi nh\u1edd c\u1ed9ng \u0111\u1ed3ng.<\/p>\n\n\n\n \u0110\u1ec3 b\u1eaft \u0111\u1ea7u s\u1eed d\u1ee5ng TypeScript, b\u1ea1n c\u1ea7n ph\u1ea3i c\u00e0i \u0111\u1eb7t m\u1ed9t s\u1ed1 c\u00f4ng c\u1ee5 c\u1ea7n thi\u1ebft. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 h\u01b0\u1edbng d\u1eabn chi ti\u1ebft v\u1ec1 c\u00e1ch c\u00e0i \u0111\u1eb7t TypeScript.<\/p>\n\n\n\n Tr\u01b0\u1edbc ti\u00ean, b\u1ea1n c\u1ea7n c\u00e0i \u0111\u1eb7t Node.js v\u00e0 npm (Node Package Manager) tr\u00ean m\u00e1y t\u00ednh c\u1ee7a m\u00ecnh. Node.js l\u00e0 m\u1ed9t m\u00f4i tr\u01b0\u1eddng ch\u1ea1y JavaScript b\u00ean ngo\u00e0i tr\u00ecnh duy\u1ec7t, v\u00e0 npm l\u00e0 c\u00f4ng c\u1ee5 qu\u1ea3n l\u00fd g\u00f3i ph\u1ea7n m\u1ec1m cho Node.js.<\/p>\n\n\n\n \u0110\u1ec3 c\u00e0i \u0111\u1eb7t Node.js v\u00e0 npm, b\u1ea1n c\u00f3 th\u1ec3 t\u1ea3i b\u1ea3n c\u00e0i \u0111\u1eb7t t\u1eeb trang web ch\u00ednh th\u1ee9c c\u1ee7a Node.js. Sau khi t\u1ea3i v\u1ec1, ch\u1ec9 c\u1ea7n ch\u1ea1y file c\u00e0i \u0111\u1eb7t v\u00e0 l\u00e0m theo c\u00e1c b\u01b0\u1edbc h\u01b0\u1edbng d\u1eabn. Sau khi c\u00e0i \u0111\u1eb7t xong, b\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra phi\u00ean b\u1ea3n c\u1ee7a Node.js v\u00e0 npm b\u1eb1ng c\u00e1ch m\u1edf terminal ho\u1eb7c command prompt v\u00e0 nh\u1eadp c\u00e1c l\u1ec7nh sau:<\/p>\n\n\n\n N\u1ebfu b\u1ea1n th\u1ea5y phi\u00ean b\u1ea3n c\u1ee7a Node.js v\u00e0 npm \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb, \u0111i\u1ec1u \u0111\u00f3 c\u00f3 ngh\u0129a l\u00e0 b\u1ea1n \u0111\u00e3 c\u00e0i \u0111\u1eb7t th\u00e0nh c\u00f4ng.<\/p>\n\n\n\n Sau khi \u0111\u00e3 c\u00e0i \u0111\u1eb7t Node.js v\u00e0 npm, b\u1ea1n c\u00f3 th\u1ec3 c\u00e0i \u0111\u1eb7t TypeScript b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng l\u1ec7nh sau trong terminal ho\u1eb7c command prompt:<\/p>\n\n\n\n L\u1ec7nh n\u00e0y s\u1ebd c\u00e0i \u0111\u1eb7t TypeScript to\u00e0n c\u1ea7u tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n. Sau khi c\u00e0i \u0111\u1eb7t xong, b\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra phi\u00ean b\u1ea3n c\u1ee7a TypeScript b\u1eb1ng c\u00e1ch nh\u1eadp l\u1ec7nh sau:<\/p>\n\n\n\n N\u1ebfu b\u1ea1n th\u1ea5y phi\u00ean b\u1ea3n c\u1ee7a TypeScript \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb, \u0111i\u1ec1u \u0111\u00f3 c\u00f3 ngh\u0129a l\u00e0 b\u1ea1n \u0111\u00e3 c\u00e0i \u0111\u1eb7t th\u00e0nh c\u00f4ng.<\/p>\n\n\n\n N\u1ebfu b\u1ea1n mu\u1ed1n c\u00e0i \u0111\u1eb7t TypeScript ch\u1ec9 cho m\u1ed9t d\u1ef1 \u00e1n c\u1ee5 th\u1ec3, b\u1ea1n c\u00f3 th\u1ec3 chuy\u1ec3n \u0111\u1ebfn th\u01b0 m\u1ee5c c\u1ee7a d\u1ef1 \u00e1n \u0111\u00f3 v\u00e0 nh\u1eadp l\u1ec7nh sau:<\/p>\n\n\n\n L\u1ec7nh n\u00e0y s\u1ebd c\u00e0i \u0111\u1eb7t TypeScript nh\u01b0 m\u1ed9t ph\u1ee5 thu\u1ed9c ph\u00e1t tri\u1ec3n cho d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n. \u0110i\u1ec1u n\u00e0y c\u00f3 ngh\u0129a l\u00e0 TypeScript s\u1ebd ch\u1ec9 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t trong th\u01b0 m\u1ee5c c\u1ee7a d\u1ef1 \u00e1n v\u00e0 kh\u00f4ng \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn c\u00e1c d\u1ef1 \u00e1n kh\u00e1c tr\u00ean m\u00e1y t\u00ednh c\u1ee7a b\u1ea1n.<\/p>\n\n\n\n Sau khi \u0111\u00e3 c\u00e0i \u0111\u1eb7t TypeScript, b\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u vi\u1ebft m\u00e3 TypeScript. T\u1ea1o m\u1ed9t file v\u1edbi ph\u1ea7n m\u1edf r\u1ed9ng \u0110\u1ec3 bi\u00ean d\u1ecbch m\u00e3 TypeScript th\u00e0nh m\u00e3 JavaScript, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng l\u1ec7nh sau trong terminal ho\u1eb7c command prompt:<\/p>\n\n\n\n L\u1ec7nh n\u00e0y s\u1ebd t\u1ea1o ra m\u1ed9t file B\u1ea1n s\u1ebd th\u1ea5y k\u1ebft qu\u1ea3 Khi s\u1eed d\u1ee5ng TypeScript, c\u00f3 m\u1ed9t s\u1ed1 \u0111i\u1ec1u b\u1ea1n c\u1ea7n l\u01b0u \u00fd \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng b\u1ea1n c\u00f3 th\u1ec3 t\u1eadn d\u1ee5ng t\u1ed1i \u0111a c\u00e1c t\u00ednh n\u0103ng c\u1ee7a n\u00f3 v\u00e0 tr\u00e1nh c\u00e1c l\u1ed7i kh\u00f4ng mong mu\u1ed1n.<\/p>\n\n\n\n TypeScript lu\u00f4n \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt v\u1edbi c\u00e1c t\u00ednh n\u0103ng m\u1edbi v\u00e0 c\u1ea3i ti\u1ebfn. Tuy nhi\u00ean, kh\u00f4ng ph\u1ea3i t\u1ea5t c\u1ea3 c\u00e1c t\u00ednh n\u0103ng m\u1edbi \u0111\u1ec1u \u0111\u00e3 \u0111\u01b0\u1ee3c ki\u1ec3m tra k\u1ef9 l\u01b0\u1ee1ng v\u00e0 c\u00f3 th\u1ec3 g\u00e2y ra c\u00e1c v\u1ea5n \u0111\u1ec1 kh\u00f4ng mong mu\u1ed1n. Do \u0111\u00f3, b\u1ea1n n\u00ean s\u1eed d\u1ee5ng c\u00e1c t\u00ednh n\u0103ng m\u1edbi m\u1ed9t c\u00e1ch c\u1ea9n th\u1eadn v\u00e0 ki\u1ec3m tra k\u1ef9 l\u01b0\u1ee1ng tr\u01b0\u1edbc khi tri\u1ec3n khai trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn v\u00e0 quan tr\u1ecdng.<\/p>\n\n\n\n TypeScript c\u00f3 m\u1ed9t t\u00ednh n\u0103ng g\u1ecdi l\u00e0 Type Inference, cho ph\u00e9p n\u00f3 t\u1ef1 \u0111\u1ed9ng suy lu\u1eadn ki\u1ec3u d\u1eef li\u1ec7u c\u1ee7a c\u00e1c bi\u1ebfn v\u00e0 h\u00e0m d\u1ef1a tr\u00ean c\u00e1ch ch\u00fang \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng. Tuy nhi\u00ean, \u0111\u00f4i khi Type Inference c\u00f3 th\u1ec3 kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng nh\u01b0 b\u1ea1n mong \u0111\u1ee3i, \u0111\u1eb7c bi\u1ec7t l\u00e0 trong c\u00e1c tr\u01b0\u1eddng h\u1ee3p ph\u1ee9c t\u1ea1p. Do \u0111\u00f3, b\u1ea1n n\u00ean hi\u1ec3u r\u00f5 v\u1ec1 c\u00e1ch Type Inference ho\u1ea1t \u0111\u1ed9ng v\u00e0 s\u1eed d\u1ee5ng Type Annotations khi c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a r\u00f5 r\u00e0ng v\u00e0 ch\u00ednh x\u00e1c.<\/p>\n\n\n\n TypeScript c\u00f3 th\u1ec3 ph\u00e1t hi\u1ec7n v\u00e0 b\u00e1o c\u00e1o nhi\u1ec1u lo\u1ea1i l\u1ed7i v\u00e0 c\u1ea3nh b\u00e1o kh\u00e1c nhau. Tuy nhi\u00ean, \u0111\u00f4i khi b\u1ea1n c\u00f3 th\u1ec3 g\u1eb7p ph\u1ea3i c\u00e1c l\u1ed7i v\u00e0 c\u1ea3nh b\u00e1o m\u00e0 b\u1ea1n kh\u00f4ng bi\u1ebft c\u00e1ch gi\u1ea3i quy\u1ebft. Trong nh\u1eefng tr\u01b0\u1eddng h\u1ee3p n\u00e0y, b\u1ea1n n\u00ean tham kh\u1ea3o t\u00e0i li\u1ec7u c\u1ee7a TypeScript v\u00e0 t\u00ecm ki\u1ebfm s\u1ef1 gi\u00fap \u0111\u1ee1 t\u1eeb c\u1ed9ng \u0111\u1ed3ng. Ngo\u00e0i ra, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c c\u00f4ng c\u1ee5 nh\u01b0 TypeScript Compiler v\u00e0 TypeScript Language Service \u0111\u1ec3 gi\u00fap b\u1ea1n qu\u1ea3n l\u00fd v\u00e0 gi\u1ea3i quy\u1ebft c\u00e1c l\u1ed7i v\u00e0 c\u1ea3nh b\u00e1o m\u1ed9t c\u00e1ch hi\u1ec7u qu\u1ea3.<\/p>\n\n\n\n D\u01b0\u1edbi \u0111\u00e2y l\u00e0 m\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 TypeScript v\u00e0 c\u00e1c c\u00e2u tr\u1ea3 l\u1eddi chi ti\u1ebft \u0111\u1ec3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 ng\u00f4n ng\u1eef n\u00e0y.<\/p>\n\n\n\n React TypeScript l\u00e0 g\u00ec? l\u00e0 vi\u1ec7c s\u1eed d\u1ee5ng TypeScript trong c\u00e1c d\u1ef1 \u00e1n React. TypeScript gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 React an to\u00e0n h\u01a1n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n nh\u1edd v\u00e0o c\u00e1c t\u00ednh n\u0103ng nh\u01b0 Static Typing v\u00e0 Type Annotations.<\/p>\n\n\n\n Generic TypeScript l\u00e0 g\u00ec? l\u00e0 m\u1ed9t t\u00ednh n\u0103ng trong TypeScript gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n linh ho\u1ea1t v\u00e0 t\u00e1i s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c. Generics cho ph\u00e9p b\u1ea1n \u0111\u1ecbnh ngh\u0129a c\u00e1c ki\u1ec3u d\u1eef li\u1ec7u kh\u00f4ng c\u1ee5 th\u1ec3 v\u00e0 s\u1eed d\u1ee5ng ch\u00fang trong c\u00e1c h\u00e0m v\u00e0 l\u1edbp, gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n d\u1ec5 hi\u1ec3u v\u00e0 b\u1ea3o tr\u00ec h\u01a1n.<\/p>\n\n\n\n Satisfies TypeScript l\u00e0 g\u00ec? l\u00e0 m\u1ed9t t\u1eeb kh\u00f3a m\u1edbi trong TypeScript gi\u00fap b\u1ea1n ki\u1ec3m tra xem m\u1ed9t gi\u00e1 tr\u1ecb c\u00f3 th\u1ecfa m\u00e3n m\u1ed9t ki\u1ec3u d\u1eef li\u1ec7u c\u1ee5 th\u1ec3 hay kh\u00f4ng. T\u1eeb kh\u00f3a satisfies gi\u00fap b\u1ea1n \u0111\u1ea3m b\u1ea3o r\u1eb1ng m\u00e3 ngu\u1ed3n c\u1ee7a b\u1ea1n an to\u00e0n v\u00e0 kh\u00f4ng c\u00f3 l\u1ed7i tr\u01b0\u1edbc khi tri\u1ec3n khai.<\/p>\n\n\n\n Xem Th\u00eam Vi\u1ec7c L\u00e0m Ph\u1ea7m M\u1ec1m t\u1ea1i Careerlink.vn <\/p>\n<\/blockquote>\n\n\n\n TypeScript l\u00e0 m\u1ed9t ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh m\u1ea1nh m\u1ebd v\u00e0 linh ho\u1ea1t, mang \u0111\u1ebfn nhi\u1ec1u t\u00ednh n\u0103ng h\u1eefu \u00edch gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n an to\u00e0n v\u00e0 d\u1ec5 b\u1ea3o tr\u00ec h\u01a1n. Tuy nhi\u00ean, n\u00f3 c\u0169ng c\u00f3 m\u1ed9t s\u1ed1 nh\u01b0\u1ee3c \u0111i\u1ec3m m\u00e0 b\u1ea1n c\u1ea7n l\u01b0u \u00fd. Hy v\u1ecdng r\u1eb1ng b\u00e0i vi\u1ebft n\u00e0y \u0111\u00e3 gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 h\u01a1n v\u1ec1 TypeScript v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 trong c\u00e1c d\u1ef1 \u00e1n c\u1ee7a m\u00ecnh.<\/p>\n","protected":false},"excerpt":{"rendered":" TypeScript l\u00e0 m\u1ed9t thu\u1eadt ng\u1eef kh\u00e1 quen thu\u1ed9c trong l\u0129nh v\u1ef1c l\u1eadp tr\u00ecnh, \u0111\u1eb7c bi\u1ec7t l\u00e0 v\u1edbi nh\u1eefng ai l\u00e0m vi\u1ec7c li\u00ean quan \u0111\u1ebfn ph\u00e1t …<\/p>\n","protected":false},"author":58,"featured_media":8798,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[64],"class_list":["post-8797","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tu-van-nghe-nghiep","tag-it"],"_links":{"self":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/8797","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/comments?post=8797"}],"version-history":[{"count":2,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/8797\/revisions"}],"predecessor-version":[{"id":8800,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/8797\/revisions\/8800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/media\/8798"}],"wp:attachment":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/media?parent=8797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/categories?post=8797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/tags?post=8797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}
<\/figure>\n<\/div>\n\n\nT\u00ednh n\u0103ng c\u1ee7a TypeScript L\u00e0 G\u00ec<\/strong><\/h2>\n\n\n\n
\n
Null Checking<\/strong><\/h3>\n\n\n\n
null<\/code> v\u00e0 undefined<\/code>, v\u00e0 cho ph\u00e9p b\u1ea1n x\u00e1c \u0111\u1ecbnh m\u1ed9t bi\u1ebfn c\u00f3 th\u1ec3 ho\u1eb7c kh\u00f4ng th\u1ec3 ch\u1ee9a gi\u00e1 tr\u1ecb null<\/code> ho\u1eb7c undefined<\/code>.<\/p>\n\n\n\nnull<\/code> v\u00e0 khi n\u00e0o kh\u00f4ng, t\u1eeb \u0111\u00f3 gi\u1ea3m thi\u1ec3u r\u1ee7i ro g\u00e2y ra l\u1ed7i runtime. V\u00ed d\u1ee5, b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng strictNullChecks<\/code> \u0111\u1ec3 b\u1eadt t\u00ednh n\u0103ng n\u00e0y, v\u00e0 TypeScript s\u1ebd b\u00e1o l\u1ed7i n\u1ebfu b\u1ea1n c\u1ed1 g\u1eafng truy c\u1eadp m\u1ed9t gi\u00e1 tr\u1ecb c\u00f3 th\u1ec3 l\u00e0 null<\/code>.<\/p>\n\n\n\nnull<\/code> v\u00e0 undefined<\/code> tr\u1edf n\u00ean ph\u1ee9c t\u1ea1p h\u01a1n. N\u00f3 gi\u00fap b\u1ea1n vi\u1ebft m\u00e3 ngu\u1ed3n an to\u00e0n h\u01a1n v\u00e0 d\u1ec5 d\u00e0ng h\u01a1n trong vi\u1ec7c b\u1ea3o tr\u00ec v\u00e0 ki\u1ec3m tra.<\/p>\n\n\n\nGenerics<\/strong><\/h3>\n\n\n\n
public<\/code>, private<\/code> v\u00e0 protected<\/code>.<\/p>\n\n\n\n\n
public<\/code>: M\u1eb7c \u0111\u1ecbnh, t\u1ea5t c\u1ea3 c\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c trong m\u1ed9t l\u1edbp \u0111\u1ec1u l\u00e0 public<\/code>, ngh\u0129a l\u00e0 ch\u00fang c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c truy c\u1eadp t\u1eeb b\u1ea5t k\u1ef3 \u0111\u00e2u trong m\u00e3 ngu\u1ed3n.<\/li>\n\n\n\nprivate<\/code>: C\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u l\u00e0 private<\/code> ch\u1ec9 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c truy c\u1eadp t\u1eeb b\u00ean trong l\u1edbp m\u00e0 ch\u00fang \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a.<\/li>\n\n\n\nprotected<\/code>: C\u00e1c thu\u1ed9c t\u00ednh v\u00e0 ph\u01b0\u01a1ng th\u1ee9c \u0111\u01b0\u1ee3c \u0111\u00e1nh d\u1ea5u l\u00e0 protected<\/code> c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c truy c\u1eadp t\u1eeb b\u00ean trong l\u1edbp m\u00e0 ch\u00fang \u0111\u01b0\u1ee3c \u0111\u1ecbnh ngh\u0129a v\u00e0 t\u1eeb c\u00e1c l\u1edbp con c\u1ee7a l\u1edbp \u0111\u00f3.<\/li>\n<\/ul>\n\n\n\nNamespaces<\/strong><\/h3>\n\n\n\n
Type Annotations<\/strong><\/h3>\n\n\n\n
Static Typing<\/strong><\/h3>\n\n\n\n
H\u1ed7 tr\u1ee3 OOP (L\u1eadp tr\u00ecnh h\u01b0\u1edbng \u0111\u1ed1i t\u01b0\u1ee3ng)<\/strong><\/h3>\n\n\n\n
\n
\u01afu \u0111i\u1ec3m c\u1ee7a TypeScript l\u00e0 g\u00ec?<\/strong><\/h2>\n\n\n\n
Mi\u1ec5n ph\u00ed v\u00e0 thu\u1eadn ti\u1ec7n<\/strong><\/h3>\n\n\n\n
Thao t\u00e1c nhanh, \u0111\u01a1n gi\u1ea3n<\/strong><\/h3>\n\n\n\n
T\u00e1i c\u1ea5u tr\u00fac d\u1ec5 d\u00e0ng<\/strong><\/h3>\n\n\n\n
Gi\u1ea3m m\u1eafc l\u1ed7i h\u1ec7 th\u1ed1ng<\/strong><\/h3>\n\n\n\n
H\u1ea1n ch\u1ebf m\u00e3 Boilerplate<\/strong><\/h3>\n\n\n\n
H\u1ee3p nh\u1ea5t m\u00e3 d\u1ec5 d\u00e0ng<\/strong><\/h3>\n\n\n\n
T\u1ed1i \u01b0u quy tr\u00ecnh l\u00e0m vi\u1ec7c<\/strong><\/h3>\n\n\n\n
Nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a TypeScript l\u00e0 g\u00ec?<\/strong><\/h2>\n\n\n\n
B\u1eaft bu\u1ed9c bi\u00ean d\u1ecbch<\/strong><\/h3>\n\n\n\n
B\u01b0\u1edbc thi\u1ebft l\u1eadp ph\u1ee9c t\u1ea1p<\/strong><\/h3>\n\n\n\n
Ch\u1ec9 l\u00e0 ph\u1ea7n m\u1edf r\u1ed9ng JavaScript<\/strong><\/h3>\n\n\n\n
T\u00ednh minh b\u1ea1ch v\u00e0 c\u1ed9ng \u0111\u1ed3ng<\/strong><\/h3>\n\n\n\n
Quy\u1ec1n t\u1ef1 do v\u00e0 linh ho\u1ea1t<\/strong><\/h3>\n\n\n\n
S\u1ef1 \u0111\u1ea3m b\u1ea3o v\u00e0 an to\u00e0n<\/strong><\/h3>\n\n\n\n
H\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t TypeScript<\/strong><\/h2>\n\n\n\n
B\u01b0\u1edbc 1: C\u00e0i \u0111\u1eb7t Node.js v\u00e0 npm<\/strong><\/h3>\n\n\n\n
node -v\nnpm -v<\/code><\/pre>\n\n\n\nB\u01b0\u1edbc 2: C\u00e0i \u0111\u1eb7t TypeScript<\/strong><\/h3>\n\n\n\n
npm install -g typescript<\/code><\/pre>\n\n\n\ntsc -v<\/code><\/pre>\n\n\n\nC\u00e0i \u0111\u1eb7t TypeScript trong m\u1ed9t d\u1ef1 \u00e1n c\u1ee5 th\u1ec3<\/strong><\/h3>\n\n\n\n
npm install typescript --save-dev<\/code><\/pre>\n\n\n\nVi\u1ebft v\u00e0 bi\u00ean d\u1ecbch m\u00e3 TypeScript<\/strong><\/h3>\n\n\n\n
.ts<\/code>, v\u00ed d\u1ee5 hello.ts<\/code>, v\u00e0 vi\u1ebft m\u00e3 TypeScript v\u00e0o \u0111\u00f3. \u0110\u00e2y l\u00e0 m\u1ed9t v\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n:<\/p>\n\n\n\nfunction greet(name: string) {\n console.log(`Hello, $!`);\n}\n\ngreet('World');<\/code><\/pre>\n\n\n\ntsc hello.ts<\/code><\/pre>\n\n\n\nhello.js<\/code> ch\u1ee9a m\u00e3 JavaScript \u0111\u00e3 \u0111\u01b0\u1ee3c bi\u00ean d\u1ecbch t\u1eeb m\u00e3 TypeScript c\u1ee7a b\u1ea1n. B\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y file hello.js<\/code> b\u1eb1ng Node.js \u0111\u1ec3 xem k\u1ebft qu\u1ea3:<\/p>\n\n\n\nnode hello.js<\/code><\/pre>\n\n\n\nHello, World!<\/code> \u0111\u01b0\u1ee3c hi\u1ec3n th\u1ecb tr\u00ean m\u00e0n h\u00ecnh.<\/p>\n\n\n\nM\u1ed9t s\u1ed1 l\u01b0u \u00fd<\/strong><\/h2>\n\n\n\n
S\u1eed d\u1ee5ng c\u00e1c t\u00ednh n\u0103ng m\u1edbi m\u1ed9t c\u00e1ch c\u1ea9n th\u1eadn<\/strong><\/h3>\n\n\n\n
Hi\u1ec3u r\u00f5 v\u1ec1 Type Inference<\/strong><\/h3>\n\n\n\n
Qu\u1ea3n l\u00fd c\u00e1c l\u1ed7i v\u00e0 c\u1ea3nh b\u00e1o<\/strong><\/h3>\n\n\n\n
C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p<\/strong><\/h2>\n\n\n\n
React TypeScript l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n
Generic TypeScript l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n
Satisfies TypeScript l\u00e0 g\u00ec?<\/strong><\/h3>\n\n\n\n
\n
K\u1ebft lu\u1eadn<\/strong><\/h2>\n\n\n\n