Động lực đằng sau TypeScript là gì?


21

Chúng tôi đã có JavaScript, sau đó chúng tôi có Flash, sau đó chúng tôi có Silverlight và sau đó HTML5 nợ tất cả.

Vậy động lực đằng sau TypeScript là gì? Những vấn đề nào sẽ được giải quyết và chúng ta sẽ có những cải tiến gì với TypeScript?

http://www.typescriptlang.org/


15
Tại sao bạn nghĩ JavaScript "nợ" JavaScript?
Bergi

1
Theo nghĩa là mọi người phải đồng ý với một số điều để tìm ra điểm chung => công nghệ và phát triển bị đình trệ.
Gero

3
Tại sao bạn lại đề cập đến phi tiêu?
Robert Harvey

Dart, TypeScript hoặc Coffeescript có thể được biên dịch thành JavaScript. Và Dart cũng khá mới.
Gero

Hãy xem bài viết này "Những suy nghĩ về TypeScript" của Nicholas C. Zakas: nczonline.net/blog/2012/10/04/ Dùts
on

Câu trả lời:


35

Có vẻ như đó là một ngôn ngữ dựa trên lớp, được gõ tĩnh, được biên dịch thành JavaScript. Đó là một ý tưởng tốt, và một ý tưởng mà những người khác cũng đã có.

Những lợi thế nên rõ ràng đối với bất kỳ ai phát triển cả ngôn ngữ dựa trên lớp, được gõ tĩnh và bằng JavaScript:

  • Đầu tiên và quan trọng nhất, một trình biên dịch. Có thể kiểm tra các vấn đề chính xác rõ ràng gây ra bởi lỗi chính tả hoặc bất cẩn trước khi triển khai là điều mà hầu hết các nhà phát triển đều cho phép cho đến khi họ phải phát triển web, và sau đó nó đột nhiên rút ra từ dưới chân họ. Các trình duyệt được thiết kế để làm cho trải nghiệm duyệt dễ chịu với chi phí cho các phương tiện kiểm tra và gỡ lỗi thích hợp, và giải pháp chuẩn, JSLint, không thể thay thế cho trình biên dịch thực sự vì nó bỏ lỡ một số vấn đề chính xác rõ ràng và trộn lẫn một loạt các khiếu nại của trình kiểm tra kiểu với các báo cáo của nó. Có một trình biên dịch thực sự là một bước tiến lớn.
  • Và dọc theo các dòng tương tự, một hệ thống loại . Loại hệ thống cải thiện mã của bạn bằng cách làm cho nó dễ đọc hơn (bạn biết chính xác những gì được truyền vào một hàm và những gì nó có thể làm, chỉ bằng cách xem danh sách tham số, chẳng hạn,) và bằng cách thực thi một mức độ chính xác nhất định khi biên dịch thời gian. (Nếu bạn đang mong đợi một loại đối tượng cụ thể, việc chuyển một số nguyên là một lỗi. JavaScript sẽ cho phép bạn làm điều đó và sau đó nó sẽ nổ tung khi bạn cố chạy nó; một trình biên dịch với một hệ thống loại sẽ bắt nó và báo lỗi bạn.)

Vì vậy, như chúng ta thấy, ý tưởng cơ bản là một ý tưởng rất tốt. Có nói rằng, tôi không thể nói bất cứ điều gì về ngôn ngữ bởi vì tôi không có kinh nghiệm với nó. Nhưng tôi đã sử dụng Smart (được liên kết ở trên) và thấy nó là một công cụ cực kỳ mạnh mẽ và hữu ích để phát triển web.


7
Nó giống như một siêu ngôn ngữ JavaScript hơn là một ngôn ngữ mới được biên dịch theo ngôn ngữ đó.
Daniel Little

2
Vâng, gõ mạnh làm giảm lập trình viên.
Edwin Yip

13
TypeScript được gõ tĩnh, không được gõ mạnh.
Fenton

15

Có một vài lý do tốt để sử dụng TypeScript, theo như tôi có thể thấy. Đầu tiên và quan trọng nhất, như Mason Wheeler đã nói, một trình biên dịch . Hay đúng hơn là tất cả việc kiểm tra một trình biên dịch nào. JSLint và các công cụ khác là hữu ích, nhưng bỏ lỡ một số vấn đề và đôi khi hoàn toàn sai. Tôi chắc chắn hoan nghênh "sự đổi mới" này.

Sau đó, có một hệ thống loại thực , cải thiện khả năng đọc và thực thi các loại chính xác. Rốt cuộc, điều này làm tăng tốc độ phát triển.

Đối với tôi, một trong những điều tuyệt vời là công cụ hỗ trợ . Đó có lẽ là một tác dụng phụ của hệ thống loại, nhưng vẫn tuyệt vời. Và thực sự cần thiết, vì hỗ trợ công cụ JavaScript hiện tại vượt quá hữu ích.

TypeScript cố gắng mở rộng JavaScript . Trình biên dịch tạo JavaScript thực sự tốt đẹp. Và ngoài ra, nó tuân theo các đề xuất ECMAScript 6 . (Ví dụ cú pháp hàm mũi tên , giá trị mặc định tham số , mô-đun , v.v.

Nó làm cho việc làm việc với các mô-đun và các lớp dễ dàng hơn. Nó thực sự có thể và khá phổ biến để làm việc với các lớp và mô-đun trong JavaScript, nhưng nó đòi hỏi một số lượng mã soạn sẵn. Và nó không thực sự dễ đọc. TypeScript cho phép viết các câu lệnh class-, interface- và module giống như trong Java hoặc C #, điều này dễ dàng hơn nhiều nếu bạn hỏi tôi.

Nhưng sau tất cả, nó vẫn chỉ là JavaScript . Không cần phải học một ngôn ngữ hoặc cú pháp mới. Điều duy nhất nó thêm vào, là hệ thống loại tùy chọn (rất tuyệt vời và quá hạn).

Sau đó, có "thư viện định nghĩa" , có nghĩa là tôi có thể sử dụng tất cả các lib JavaScript của mình mà không cần viết lại hoặc thậm chí vá chúng. Tuy nhiên, tôi có hệ thống loại bổ sung bây giờ.

Tôi chắc chắn sẽ thử một lần!

Một điều cuối cùng, không có sự cạnh tranh giữa HTML5 và TypeScript. Nhưng nó là một câu chuyện khác.


5

Chúng tôi đã có JavaScript, sau đó chúng tôi có Flash, sau đó chúng tôi có Silverlight và sau đó HTML5 nợ tất cả.

Điều này chỉ đơn giản là KHÔNG đúng . Html5 không sở hữu chúng, nó giới thiệu các đánh dấu mới giúp đơn giản hóa việc sử dụng đa phương tiện và khám phá các lợi thế của các trình duyệt thời đại mới (như sử dụng tăng tốc phần cứng trong khi hiển thị html).

Vậy động lực đằng sau TypeScript là gì?

Động lực có thể được thúc đẩy bởi lý do để sử dụng nó. Tất cả các tính năng của TypeScript như: kiểm tra tĩnh, điều hướng dựa trên biểu tượng, hoàn thành câu lệnh và tái cấu trúc mã là những lý do rất mạnh để xem xét nó.

Ngoài ra, nó cung cấp các lớp, mô-đun và giao diện để giúp bạn xây dựng các thành phần mạnh mẽ. Các tính năng này có sẵn tại thời điểm phát triển để phát triển ứng dụng có độ tin cậy cao, nhưng được biên dịch thành JavaScript đơn giản.


HTML 5 không phải là một yêu cầu trước để tăng tốc phần cứng. Hầu hết các trình duyệt đang thực hiện việc này có hoặc không có đánh dấu HTML5
Neil N

tuyên bố của tôi chỉ ra rằng tăng tốc phần cứng là một tính năng mà trình duyệt cung cấp không phải là html5.
EL Yusubov

3

Nó có thể được coi là một công cụ để quản lý phát triển javascript chứ không phải là một ngôn ngữ hoàn toàn mới biên dịch thành JS. Nó không muốn trở thành ngôn ngữ phát triển phía máy chủ như Dart và không có cú pháp khác như CoffeeScript. Nó không muốn lấy một ngôn ngữ phổ biến (và đó là thư viện cốt lõi) và biên dịch nó thành JS như GWT hoặc script #. TypeScript thậm chí tuân theo cú pháp "lớp" tương tự được đề xuất cho phiên bản tiếp theo của JS.

Tôi nghĩ rằng hầu hết việc phát triển web được thực hiện ngày nay chỉ sử dụng javascript thực, chỉ ở phía máy khách. Các ngôn ngữ hoặc khung như Dart, GWT không phù hợp cho việc này. Nếu bạn đi tìm coffeescript, một cú pháp mới sẽ xuất hiện. Và bạn phải hiểu cả coffeescript và JS. Mặc dù TypeScript chỉ bổ sung thêm một số tính năng định hướng loại bổ sung, được kết hợp vào JS, giúp lưu các nhà phát triển khỏi các lỗi cụ thể về loại (phần lớn là lỗi của JS) và cung cấp cho các công cụ phát triển nhiều thông tin hơn về ý định của nhà phát triển.

Cách tiếp cận này không mới. Chuyển đến phần "Nhập tĩnh" của

Bài viết này giải quyết truy vấn của bạn- http://www.eweek.com/developer/microsoft-delivers-typescript-a-better-javascript-for-big-apps/


0

Tôi nghĩ rằng đó là một nỗ lực để biến một mẩu tin tào lao (javascript) được chia sẻ, không đáng tin cậy thành một ngôn ngữ độc quyền thực sự có thể được sử dụng cho các dự án quan trọng.

Nó nên được so sánh với GWT, có một bộ mục tiêu tương tự nhưng đã có một cách tiếp cận sạch hơn bằng cách làm cho javascript không phải là một phần của ngôn ngữ; và với các applet Java hoặc Flash, sử dụng cách tiếp cận rất rõ ràng để xác định một môi trường thời gian chạy hoàn chỉnh độc lập với trình duyệt.

Ý kiến ​​của bạn có thể khác nhau, nhưng tôi nghĩ rằng nó sẽ bị tiêu diệt miễn là nó phụ thuộc vào các trình duyệt vốn cung cấp các triển khai javascript (khác nhau, không nhất quán) và các mô hình DOM.


5
Thứ nhất, nó không phải là độc quyền, nó đã là một tiêu chuẩn mở. Thứ hai, nó giống như Dart hơn là GWT / ScriptSharp (mặc dù tương tự).
Daniel Little

1
Có lẽ không có cách nào để chiến thắng điều này - nếu Microsoft không kiểm soát nó, nó sẽ trở thành một ngôn ngữ bastardized khác với rất nhiều biến thể và nó vẫn phụ thuộc vào số lượng thay đổi của javascript và DOM
ddyer

1
Bạn có vẻ như là một người có thể hơi cay đắng vì các kỹ năng Flash và / hoặc Java của họ được tạo ra ít liên quan hơn đáng kể bởi ngăn xếp HTML5 / JS phổ biến hiện tại.
Graham

3
-1 Vì vậy, bạn không thích JavaScript. Đó là tuyên bố của bạn, về cơ bản.
Bruno Schäpper

2
Công bằng, và vì đó là nền tảng cho bản thảo, tôi đoán tôi nghĩ bản thảo dựa trên nền tảng xấu. Nó không nhất thiết gây tử vong, nhưng đó là một thế giới bị tổn thương.
ddyer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.