Tại sao TypeScript là cách tốt nhất để viết Front-end vào năm 2019

Và tại sao bạn nên thuyết phục mọi người sử dụng nó.

TypeScript ngày càng phổ biến hơn trong môi trường Front-end. Đã có 80% các nhà phát triển thừa nhận họ muốn sử dụng hoặc tìm hiểu TypeScript trong dự án tiếp theo của họ. Chính tôi, tôi đã yêu nó từ khi tôi sử dụng nó lần đầu tiên. Và tôi sẽ tiếp tục sử dụng điều này trong tất cả các dự án tiếp theo của tôi chắc chắn.

Một số người nêu lên mối lo ngại rằng TypeScript là một sự phụ thuộc không cần thiết của chuỗi công cụ mặt trước. Là nó? Theo tôi để biết rằng thực tế hoàn toàn ngược lại.

Một câu chuyện về một anh chàng ngôn ngữ đánh máy năng động

Trong hầu hết 18 năm trong sự nghiệp lập trình của tôi, tôi chưa bao giờ thích các ngôn ngữ gõ tĩnh. Kể từ khi tôi bắt đầu lập trình vào năm 2001, các ngôn ngữ mà tôi lựa chọn luôn được gõ một cách linh hoạt: PHP, JS, Ruby, Elixir. Tôi đã thực hiện một số chương trình trong C ++ và Java ở đây và đó, nhưng tôi luôn ghét những môi trường đó. (V Tại sao tôi cần phải vượt qua mọi nơi? Thật tệ. Tôi có thể tự chăm sóc chúng.

Mọi thứ đã thay đổi khoảng 2 năm trước. Đó là khi tôi sử dụng TypeScript lần đầu tiên. Tuy nhiên, tôi đã yêu nó ngay từ đầu. Trong vài ngày đầu, nó thực sự làm tôi khó chịu. Tình hình thay đổi nhanh chóng mặc dù. Càng nhiều định nghĩa kiểu tôi đưa vào mã, tôi càng nhận thấy rằng nó tiết kiệm cho tôi khỏi lãng phí thời gian vào việc gỡ lỗi thủ công các lỗi ngu ngốc trong bảng điều khiển. Tôi đã bắt đầu đánh giá cao các loại.

Trong hai năm tiếp theo, bất cứ khi nào tôi hợp tác trên các ứng dụng front-end, cho dù đó là Angular hay React, tôi nhận thấy rằng dù tôi đang sử dụng khuôn khổ nào, luôn có một điều mà tôi đã bỏ lỡ trong tất cả các dự án .js: TypeScript .

Bây giờ tôi phải thừa nhận. Tôi không thích ngôn ngữ gõ động nữa. Tôi vẫn có thể làm việc rất hiệu quả với chúng, nhưng điều đó làm tôi không hài lòng khi tôi có thể chỉ cần tra cứu các định nghĩa kiểu trong IDE hoặc tin tưởng vào trình biên dịch trong khi tạo nguyên mẫu mã. (Điều duy nhất tôi vẫn nhớ trong Elixir là các loại mạnh.)

May mắn thay, chúng tôi không phải đợi cho đến khi Ecma TC39 ủy quyền giới thiệu hệ thống loại tĩnh vào JavaScript. Chúng ta có thể sử dụng TypeScript thay thế. Đặc biệt là trong các dự án mới, khi rắc rối của việc sử dụng nó là tối thiểu.

Đối số Anti-TypeScript

Tuy nhiên, một số người vẫn dám lập luận rằng việc đưa TypeScript vào dự án của bạn sẽ:

  • tăng thời lượng của các nhà phát triển mới lên máy bay,
  • bảo trì phức tạp,
  • giới thiệu rất nhiều xung đột với React,
  • tăng thời gian phát triển,
  • khóa dự án với một số công nghệ hipstery đã giành được sự tồn tại trong một năm kể từ bây giờ,
  • ngăn chặn việc tuyển dụng những người giỏi về JS
  • làm cho không thể mang mã từ các cơ sở mã không phải TS,
  • gây khó khăn cho việc chỉnh sửa ứng dụng trong tương lai xa.

Tôi dám nói họ sai tất cả. TypeScript sẽ giúp bạn với tất cả các trường hợp trên và tôi có thể cung cấp cho bạn các đối số cụ thể tại sao lại như vậy.

Đó là lý do tại sao tôi quyết định viết bài viết này. Có lẽ nó sẽ giúp thuyết phục bạn, bạn bè, đồng nghiệp hoặc CTO của bạn, với ngôn ngữ tuyệt vời này.

Lưu ý: Tôi đã thắng được giải thích về những gì TypeScript là một trong bài viết này. Tôi chỉ tập trung vào trên mạng vì sao bạn nên sử dụng nó. Nếu bạn vẫn chưa quen với TypeScript thực sự là gì, tôi khuyên bạn nên đọc một số liên kết sau:

  • TypeScript là gì và tại sao tôi lại sử dụng nó thay thế cho JavaScript? - - Bewijij, Bewards, StackOverflow
  • Trang web chính thức của ngôn ngữ TypeScript
  • Loại TypeScript - JavaScript với siêu năng lực. - Indrek Lasn, Medium
  • Cơn sốt TypeScript Deep Dive Việt - Sách điện tử của Basarat Ali Syed

Ưu điểm của TypeScript

1. Mã dễ hiểu hơn

Thông thường khi bạn làm việc trên một đoạn mã, ví dụ mã chức năng, để hiểu nó đầy đủ, bạn cần phải nắm bắt:

  1. Những lý lẽ nào nó chấp nhận?
  2. Nó trả về giá trị gì?
  3. Nó đòi hỏi dữ liệu bên ngoài nào?
  4. Nó làm gì với các đối số và dữ liệu ngoài này để tạo ra giá trị trả về?

Trong các ngôn ngữ gõ động, rất khó để trả lời ba câu hỏi đầu tiên. Nếu một hàm nhận được đối số bài viết, chính xác nó là gì? Nó có phải là một đối tượng với một số thuộc tính bài viết? Những thuộc tính chính xác là gì? Có một bài viết.title hoặc article.name? Tôi có thể luôn luôn cho rằng article.title tồn tại không? Làm thế nào về bài viết.isPublished? Tôi có thể biết rằng thuộc tính này được hợp nhất vào đối tượng bài viết ở hầu hết các vị trí của ứng dụng, nhưng tôi có thể chắc chắn rằng nó luôn luôn có mặt ở vị trí này không?

Để trả lời tất cả những câu hỏi đó, thông thường bạn cần phải thực hiện một trong những điều sau đây:

a) đặt console.log (bài viết), chạy tập lệnh trong trình duyệt của bạn, (có thể nhấp qua UI một chút) và đọc nhật ký;

b) xem nơi chức năng được sử dụng và từ đó theo dõi dữ liệu nào được đưa vào tất cả các lần xuất hiện của nó;

c) hỏi đồng nghiệp của bạn rằng gần đây đã làm việc về mã này (trong khi hy vọng rằng họ vẫn còn sống, trực tuyến và ghi nhớ mã đó);

d) giả định rằng bài viết đó giống như những gì bạn nghĩ, và chỉ hy vọng nó hoạt động.

Điều đó nghe có quen với bạn không?

Đối với tôi, âm thanh đó giống như một quy trình phát triển web điển hình trong bất kỳ ngôn ngữ được gõ động nào như JS, PHP, Ruby, Python, Elixir.

Trong các ngôn ngữ được nhập tĩnh như TypeScript, bạn nhận được câu trả lời cho tất cả các câu hỏi trên ngay lập tức từ IDE và trình biên dịch của bạn. Bạn không còn cần phải xem qua toàn bộ cơ sở mã, tiếp tục làm phiền các đồng nghiệp của mình với các câu hỏi hoặc có nguy cơ gặp lỗi trong quá trình sản xuất.

2. Mã dễ dàng hơn và nhanh hơn để thực hiện

Thông thường, khi bạn phải tạo một tính năng mới hoặc một thành phần mới, quy trình làm việc của bạn có thể trông giống như thế này:

  1. Khởi động lại hàm thành phần, tạo các đối số hàm tạo của nó, viết mã còn lại.
  2. Nếu nó yêu cầu bất kỳ dữ liệu bên ngoài hoặc tinh vi nào (như người dùng hoặc bài viết), hãy đoán xem nó sẽ trông như thế nào, giữ nó trong bộ nhớ của riêng bạn và sử dụng nó như thế trong mã.
  3. Đặt thành phần vào ứng dụng của bạn và chuyển đạo cụ vào nó.
  4. Kiểm tra nó, bằng tay hoặc với các bài kiểm tra đơn vị. (Bạn cần đảm bảo rằng nó nhận được các đạo cụ cần có và nó hoạt động như thế nào nó sẽ hoạt động.)
  5. Nếu có gì đó không đúng, hãy quay lại mã của bạn, thử tìm hiểu xem điều gì đã sai với nó, sửa nó và quay lại bước không. 4.

Trong TypeScript, nó tương tự, nhưng dễ dàng và nhanh chóng hơn:

  1. Bootstrap chức năng thành phần, xác định định nghĩa kiểu của nó và thực hiện nó.
  2. Nếu nó yêu cầu bất kỳ dữ liệu bên ngoài hoặc tinh vi, hãy tra cứu giao diện của chúng và sử dụng lại chúng (đầy đủ hoặc một phần).
  3. Đặt thành phần vào ứng dụng của bạn và chuyển đạo cụ vào nó.
  4. Đó là nó. (Nếu bạn khớp chính xác các typedefs giữa người gọi và callee, mọi thứ sẽ hoạt động hoàn hảo. Điều duy nhất bạn phải kiểm tra bây giờ là logic kinh doanh thực tế của thành phần của bạn.)

Do đó, bất cứ khi nào bạn viết mã bằng TypeScript, không chỉ nó dễ đọc hơn và ít bị lỗi hơn, mà chủ yếu, chỉ dễ dàng hơn để lý do.

3. Mã dễ dàng hơn để tái cấu trúc

Ở đó, thường có khá nhiều thứ bạn muốn chỉnh sửa lại, nhưng vì chúng chạm vào quá nhiều thứ và tập tin, nên bạn rất sợ thay đổi chúng.

Trong TypeScript, những thứ như vậy thường có thể được cấu trúc lại chỉ bằng một cú nhấp chuột của Lệnh Rename Symbol biểu tượng trong IDE của bạn.

Đổi tên ứng dụng trực tuyến vào thành exp expout

Trong các ngôn ngữ được nhập động, điều tốt nhất bạn có thể nhận được để giúp bạn tái cấu trúc nhiều tệp cùng một lúc là Tìm kiếm & Thay thế bằng RegExp.

Trong các ngôn ngữ được nhập tĩnh, Tìm kiếm & Thay thế là không cần thiết nữa. Với các lệnh IDE như Tìm tất cả các lần xuất hiện và Đổi tên Biểu tượng, bạn có thể thấy tất cả các lần xuất hiện trong ứng dụng của chức năng, lớp hoặc thuộc tính đã cho của giao diện đối tượng.

Bất cứ khi nào bạn muốn cải thiện hệ thống xây dựng của mình một chút, đổi tên các thành phần, thay đổi đối tượng người dùng hoặc xóa thuộc tính không dùng nữa, bạn không cần phải sợ phá vỡ mọi thứ nữa. TypeScript sẽ giúp bạn tìm tất cả các cách sử dụng bit được cấu trúc lại, đổi tên nó và thông báo cho bạn một lỗi biên dịch trong trường hợp mã của bạn có bất kỳ kiểu không khớp nào sau khi cấu trúc lại.

4. Ít lỗi

Trong suốt nhiều năm phát triển web front-end, tôi nhận thấy rằng tôi có thể tiết kiệm khoảng ~ 50% thời gian để sửa lỗi chỉ bằng cách có ai đó ngồi cạnh tôi sẽ ngay lập tức hét lên với tôi mỗi khi tôi đánh máy, sử dụng một giá trị có thể là null hoặc chuyển một đối tượng vào một nơi mà nó phải là một mảng thay thế.

Tôi vui mừng nói rằng cuối cùng tôi đã gặp người bạn đó: nó được gọi là TypeScript.

Nhờ có nó, việc viết mã không hợp lệ trở nên khó khăn hơn. Nếu nó biên dịch, bạn có thể khá chắc chắn rằng nó thực sự hoạt động.

5. Ít kiểm tra nồi hơi

Khi bạn chắc chắn các biến của mình được truyền chính xác vào tất cả các vị trí nhất định, bạn không cần phải kiểm tra tất cả các biến đó nữa.

Thay vì viết các bài kiểm tra đơn vị / tích hợp đơn giản, bạn có thể tập trung hơn vào kiểm tra logic nghiệp vụ của ứng dụng, thay vì kiểm tra xem các đối số chức năng của bạn có được truyền chính xác lẫn nhau hay không.

Thử nghiệm ít hơn có nghĩa là thời gian ngắn hơn để phát triển các tính năng mới và một cơ sở mã nhỏ hơn, do đó ít phức tạp hơn, ít lỗi hơn và dễ bảo trì hơn.

6. Mã dễ hợp nhất

Nhà phát triển cơ sở mới trong nhóm của bạn vừa ban hành PR giới thiệu mã mới. Thoạt nhìn tất cả đều có vẻ oái oăm: mã có vẻ tốt, các bài kiểm tra đơn vị ở đó, mọi thứ đều chuyển sang màu xanh.

Bạn có thể chắc chắn tại thời điểm này rằng nó hoạt động mặc dù? Điều gì xảy ra nếu nó không có bài kiểm tra đơn vị thích hợp? (Yeh. Hãy để nhóm gặp gỡ những người thực tế, rất nhiều người trong chúng ta vẫn không thể viết đủ số lượng của họ.) Bạn sẽ tin tưởng người tạo PR chứ? Hay bạn sẽ tập trung 5 phút quý giá của mình để thực sự tự chạy mã và kiểm tra nó?

Nếu bạn có TypeScript trong chuỗi công cụ của mình, nó sẽ cung cấp cho bạn một kiểm tra đảm bảo khác: kiểm tra biên dịch typedef.

Nếu mã có vẻ tốt, các bài kiểm tra đơn vị ở đó và toàn bộ điều biên dịch, bây giờ bạn có thể khá chắc chắn rằng toàn bộ hoạt động.

TypeScript giúp dễ dàng tin tưởng các nhà phát triển khác. Nó có thể cải thiện tốc độ mà bạn xem xét và hợp nhất PR.

(Điều tương tự cũng diễn ra theo cách khác: nhờ các định nghĩa kiểu, đối với các nhà phát triển mới, sẽ dễ dàng hơn để xem những gì người khác đang thực hiện các phần mã mà không cần phải đi sâu vào nó hoặc tự chạy nó.)

7. Giúp nhà phát triển có quy trình làm việc chính xác

Khi viết mã bằng các ngôn ngữ được nhập tĩnh, trước tiên bạn cần nghĩ về các loại dữ liệu bạn sẽ nhận được, sau đó về loại dữ liệu bạn muốn tạo. Thông thường chỉ sau đó bạn ngồi xuống để thực hiện thực tế.

Nhiều người sẽ đặt cược cuộc sống của họ rằng đây là quy trình mã hóa chính xác.

Ví dụ, bất cứ khi nào bạn phát triển một thuật toán, trước tiên bạn nên nghĩ về công thức lý thuyết của nó và sau đó thực hiện nó.

Hoặc, bất cứ khi nào bạn thực hiện TDD, trước tiên bạn cần nghĩ cách mã của bạn sẽ hoạt động trong thực tế (dữ liệu nào sẽ nhận được và dữ liệu nào sẽ tạo ra), viết nó dưới dạng thử nghiệm, sau đó triển khai mã thực tế.

Điều tương tự áp dụng cho TypeScript. Nó khuyến khích bạn suy nghĩ về giao diện mã của bạn trước khi ngồi xuống triển khai nội bộ của nó.

Lo ngại về TypeScript

1. Nó sẽ gây hại cho tuyển dụng của chúng tôi

Nó sẽ không

Các khảo sát về JS thường xuyên cho thấy rõ ràng rằng ngày càng có nhiều người lập trình trong TS hoặc sẵn sàng thử nó.

https://2018.stateofjs.com/javascript-flavours/typescript/

Cuộc khảo sát trên đã chứng minh điều đó: tính đến năm 2018, 80% các nhà phát triển front-end muốn làm việc trong TypeScript.

Có TypeScript trong ngăn xếp của bạn có thể sẽ thắng lợi hại cho tuyển dụng của bạn. Nó thực sự có thể làm ngược lại. Nếu một nhà phát triển thấy rằng bạn sử dụng các công cụ tốt nhất có sẵn trên thị trường, anh ta sẽ sẵn sàng làm việc trong công ty của bạn. Các công cụ hiện đại mang đến cho các nhà phát triển hiện đại.

2. Lên máy bay sẽ mất nhiều thời gian hơn

Sự thật là, mặc dù TypeScript là một siêu ngôn ngữ của JavaScript, nhưng đây là điều mới mẻ mà mọi người phải học. Một nhà phát triển không quen thuộc với TS sẽ phải đọc về nó trong ít nhất một hoặc hai giờ, trước khi bắt đầu hợp tác trong một dự án như vậy.

Ngược lại, nếu bạn có một dự án đã được xây dựng trong TypeScript, sẽ rất dễ dàng cho các nhà phát triển mới phù hợp. TS Syntax rất trực quan và rất dễ hiểu (có lẽ đó là lý do khiến nó trở nên phổ biến). Giao diện chức năng chung, bảo vệ loại, loại có điều kiện? Bạn không bao giờ phải chạm và cũng không hiểu những điều đó trong 99% công việc hàng ngày của bạn. 1% còn lại thường là điều chỉ phải được thực hiện ngay từ đầu, có thể được chuẩn bị bởi một lập trình viên đã thành thạo TS.

Hơn nữa, nhờ những lợi thế của TS (mà tôi đã đề cập trước đó), nhà phát triển mới sẽ dễ dàng bắt đầu thực hiện mọi thứ trong cơ sở mã hiện tại của bạn. Nếu anh ta chỉ cần thay đổi một điều nhỏ hoặc thực hiện một cái gì đó mới, anh ta không cần duyệt qua toàn bộ cơ sở mã nữa để hiểu dữ liệu nào được thông qua và ở đâu. Anh ta có thể đọc nó ngay lập tức trong IDE của mình và chơi xung quanh với dữ liệu. Trình biên dịch TS sẽ cung cấp cho anh ta thông tin phản hồi tức thì về các biến anh ta sử dụng và sẽ hướng dẫn anh ta bất cứ khi nào anh ta mắc lỗi.

3. Phản ứng / Redux và TS không phù hợp với nhau

Thành phần nút trong React và TypeScript

Sai trái. TS đã có hỗ trợ TSX từ lâu. Cũng nhờ các loại chung đơn giản như React.Component <Đạo cụ, Trạng thái>, bạn có thể thoát khỏi PropTypes và sử dụng hệ thống loại thực thay thế.

Đúng là khoảng một năm trước, người ta bắt buộc phải viết một chút mã soạn sẵn để làm cho TypeScript hoạt động với các trình tạo hành động Redux. Nhưng kể từ khi TS 2.8 đã được phát hành vào tháng 2 năm 2018, đây không còn là trường hợp nữa. Bạn có thể có cả mã React / Redux được gõ và đơn giản trong TypeScript. FYI, React Contexts hoặc Hook hoạt động hoàn hảo với TypeScript.

4. Không thể sử dụng lại mã JS trong ứng dụng TS.

Một lần nữa, sai. Bất kỳ mã JS nào cũng là mã TS hợp lệ.

Đúng là, nếu bạn sử dụng TS ở chế độ nghiêm ngặt (noImplicitAny), bạn sẽ phải thêm một số loại ở đây và ở đó để làm cho mã JS hoạt động. Nhưng kia là nó! Thậm chí còn có một plugin IDE có thể tự động chuyển đổi các thành phần JS React của bạn trực tiếp sang TS.

Khi bạn cần sao chép một số js lib nhà cung cấp cũ kỳ lạ vào dự án TS của bạn: chỉ cần làm điều đó. Nếu không có kiểu chữ TS cho nó (điều này xảy ra ngày càng ít hơn bây giờ), hãy tự thêm chúng hoặc chỉ sử dụng bất kỳ khi tham khảo nhà cung cấp. Nó không giống như đột nhiên bạn sẽ mất loại an toàn trong toàn bộ ứng dụng của bạn. Bạn sẽ mất nó chỉ trong lớp chạm vào nhà cung cấp chưa được đánh dấu. Nhưng điều đó không ngăn cản việc dễ dàng gõ lớp của bạn ít nhất. Và đối với nhà cung cấp, bạn luôn có thể thêm typedefs cho nó sau này, bất cứ khi nào bạn quyết định họ cũng sẽ hữu ích.

5. Bằng cách chọn TypeScript, cuối cùng chúng ta có thể bị khóa với một số công cụ kế thừa, mà không ai sẽ hỗ trợ trong tương lai.

Hiện tại, TypeScript đang được Microsoft, Asana, Lyft, Slack, tất cả các nhà phát triển Angular 2+, nhiều nhà phát triển React & Vue.js và hàng ngàn công ty khác sử dụng. Nhiều người khác đang tham gia cùng họ mỗi ngày. TypeScript là superset phổ biến nhất của JS tại thời điểm này và sẽ không sớm bị hỏng.

Cơ hội mà ngôn ngữ như vậy sẽ bị bỏ rơi là gì?

Tôi nói gần với số không. Kịch bản duy nhất mà TS có thể chết là nếu JS tự mình đưa các loại vào ngôn ngữ của họ. Nhưng điều này đã thắng xảy ra bất cứ lúc nào sớm. Ít nhất là không trong ~ 5 trận10 năm tới. Trong trường hợp hiếm hoi thực sự sẽ xảy ra, bạn có thể chắc chắn rằng cũng sẽ có các công cụ cho phép bạn dễ dàng di chuyển từ TS sang gõ JS.

~ 51010 năm kể từ bây giờ có thể là thời gian mà không ai biết React, Vue hay Angular nữa. Nhưng bạn có thể thấy một vấn đề với việc bám vào những khuôn khổ đó không? ;)

6. Những gì về dòng chảy?

TypeScript cung cấp cho bạn điều tương tự như Flow, và hơn thế nữa. Nó cũng là cách phổ biến hơn.

Tải xuống TS vs Flow npm trong 2 năm qua (npmtrends.com)

Chỉ cần điều này là đủ để bạn không xem xét Flow. Nếu nó cùng một điều, nhưng với ít chức năng hơn và hỗ trợ cộng đồng nhỏ hơn nhiều, tại sao bạn lại xem xét nó?

Nhìn nhận lại, Flow đã từng phổ biến như TS khoảng 3 năm trước, khi cả hai đều là những người chơi mới trên thị trường. Một trong số đó đã được thúc đẩy bởi Microsoft và cộng đồng Angular, trong khi cái còn lại được Facebook và một số cộng đồng React ưa thích.

TypeScript cuối cùng đã thắng. Ngày nay, ngày càng có nhiều nhà phát triển từ tất cả các khung công tác phía trước đang chuyển sang TypeScript.

Ngoài ra, còn có một vài lựa chọn thay thế gõ-JS khác (như PureScript hoặc Elm), nhưng hãy để không xem xét chúng ở đây. Tôi muốn nói về một cái gì đó có sự hỗ trợ cộng đồng rộng rãi và nhiều công ty đã sử dụng nó trong sản xuất, không chỉ một vài người có sở thích. (Xin lỗi, các bạn.)

Nhược điểm TypeScript

1. Yêu cầu một bước biên dịch

Một số người bạn Node.js phụ trợ của tôi nói với tôi rằng việc giới thiệu TS cho họ chỉ là không đáng, bởi vì nó sẽ mang lại nhiều rắc rối với nhu cầu biên dịch trước tất cả các tệp .ts trước khi chạy chúng trên Node.

Mặc dù đó là điều mà chắc chắn bạn có thể xử lý với thiết lập xây dựng và phát triển tốt, tôi có thể không đồng ý rằng nó bổ sung một chút chi phí cho ứng dụng Node.js của bạn.

Tôi có thể đồng ý về điều này trong môi trường Front-end. Mọi người đều biên dịch JS trong front-end ngày nay. Bạn cần hỗ trợ trình duyệt cũ? Tính năng ES7? CSS-in-JS? Đối với tất cả những điều này có lẽ bạn đã sử dụng babel. TypeScript có thể được biên dịch bằng Babel, giống như bất kỳ cú pháp nào khác của JS (bao gồm ES7 hoặc JSX).

Đưa TypeScript vào dự án front-end của bạn hầu như không mang lại chi phí nào cho thiết lập bản dựng. (Nó chỉ có thể mang lại chi phí hoạt động trong trường hợp khi bạn không biên dịch mã JS của bạn, nhưng điều đó rất hiếm khi xảy ra ở phần đầu.)

2. Một chút khó khăn để thiết lập

Tôi có thể đồng ý về điều đó. Ví dụ: sự khác biệt giữa ứng dụng Next.js và ứng dụng Next.js trong TypeScript là gì? Trong trường hợp thứ hai, bạn cần phải làm cho máy chủ Node.js, webpack và trình chạy thử nghiệm jest của bạn hoạt động với TypeScript. Ngoài ra, bất cứ khi nào bạn thêm một số thư viện như React, Redux, Styled-Components, bạn cũng cần thêm typedefs cho nó, như npm i @ type / styled-thành phần (trừ khi lib có tệp TS typedefs kèm theo).

Câu hỏi bạn cần tự trả lời, bạn có thường xuyên làm như vậy không? Có phải đó là rất nhiều nỗ lực, để xứng đáng để từ bỏ tất cả các lợi thế của TypeScript?

Tóm lược

Tôi có nói rằng tất cả chúng ta nên đột nhiên chuyển sang TypeScript không? Không. Ví dụ, chuyển sang nó trong một dự án hiện tại chắc chắn là rất nhiều công việc và nó nên được suy nghĩ mạnh mẽ trước khi làm như vậy.

Tuy nhiên, nếu bạn tạo ra một ứng dụng front-end mới, ứng dụng này sẽ phải được duy trì theo thời gian, thì trường hợp này đã rõ ràng. Đi với TypeScript. Thành thật mà nói, tôi rất muốn nghe lý do chống lại việc sử dụng TS trong bất kỳ dự án đầu cuối tiếp theo nào của bạn.

Tôi chỉ muốn nói điều này: bằng cách sử dụng TypeScript, bạn sẽ có được vô số lợi thế mạnh mẽ, với chi phí cho một chút nỗ lực ban đầu.

Hãy để những người làm TypeScript

Liên kết

Giới thiệu về TypeScript

  • TypeScript là gì và tại sao tôi lại sử dụng nó thay thế cho JavaScript? - - Bewijij, Bewards, StackOverflow

Chuyển đổi sang TS

  • Loại TypeScript tại Lyft '- Mohsen Azimi, Medium
  • Loại TypeScript tại Slack '- Felix Rieseberg, Medium
  • Cách thức chúng tôi di chuyển một dự án 200K + LỘC sang TypeScript và sống sót để kể câu chuyện về - - Kleo Petrov, Hashnode
  • Chuyển đổi 600K dòng thành TypeScript trong 72 giờ - Paul Draper & Ryan Stringham, LucidChard TechBlog

Những đánh giá khác về TS

  • 7 lý do xấu khi không sử dụng TypeScript. - Dmitry Pashkevich, Medium
  • Tại sao nên sử dụng TypeScript, lý do tốt và xấu
  • JavaScript JavaScript so với TypeScript so với ReasonML, - Tiến sĩ Axel Rauschmayer, 2ality
  • Bản in kiểu chữ - Tại sao người ta nên sử dụng nó?
  • Tại sao TypeScript đang phát triển phổ biến hơn - Mary Branscombe, ngăn xếp mới