2016-04-18 19 views
1

Typescript是用於開發Javascript應用程序的語言。我不明白爲什麼要創建新語言,而不是使用成熟和不斷髮展的語言,如C#。 C#可能已被用於將代碼轉換爲Javascript。有很多第三方和開源項目可以完成這項工作。 C#現在支持閉包,動態關鍵字,因此將C#轉換爲JavaScript本來就很容易。從語法上看,TypeScript也受C#的影響。爲什麼Microsoft開發了一種名爲Typescript的新語言,而不是創建C#到Javascript轉譯程序

所以問題是

  1. 爲什麼微軟已經開發了一種名爲打字稿,而不是創建C#爲Javascript transpiler新的語言? C#本來可以用於相同的目的。
  2. 背後有任何技術/其他原因嗎?
+1

有相當多的語言可以轉化爲javascript([這裏是一個列表])(https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-c​​ompile-to-js )),但打字稿的目標是成爲JavaScript的超集,那就是你用javascript編寫的,但有一些增加(如接口等)。打字機的目標可以在這裏找到(https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals),你會注意到'C#'不匹配。 –

+0

@Pointy有很多工具可以完成這項工作。例如Bridge.Net,Jsil.org等。所以問題是爲什麼不是微軟? – parag

回答

4

爲什麼微軟開發了一種名爲Typescript的新語言而不是 創建C#to Javascript transpiler? C#本來可以用於 相同的目的。

背後有任何技術/其他原因嗎?

從技術上說是的,但沒有。 C#的規則與JavaScript的截然不同。他們可能看起來一樣,但他們相距甚遠。 (這有點像說Java和JavaScript是一樣的,因爲它們都使用括號,而且它們都以Java開頭。)TypeScript擴展了JavaScript語言。您仍然可以在TypeScript中編寫JavaScript。如果你使用C#,你無法做到這一點。

以下是一些示例。在C#中可以有多個構造函數。 JavaScript(如Highlander)只能有一個。

C#允許方法重載。 JavaScript的....都能跟得上。

JavaScript在方法調用中可以具有可變數量的參數。你可以有一個方法,它需要5個參數,如果你喜歡,可以用5,4,0或7來調用它。 C#無法處理這個問題。

現在,您可以從C#生成JavaScript代碼,但實際上您只是強制使用JavaScript的子集來適應C#的使用。 TypeScript是一種在JavaScript範圍內工作的全新語言,同時提供了一些強類型語言允許的結構。

+0

從上面的答案引用。 「TypeScript擴展了JavaScript語言,您仍然可以在TypeScript中編寫JavaScript,如果您使用C#,則無法這樣做。」 。我認爲這是打字稿的真正原因。 – parag

0

Typescript是JavaScript的嚴格超集,意味着幾乎所有有效的JS都是有效的Typescript。它是爲了與Javascript進行互操作而設計的。 C#永遠不可能處於同一級別。許多不同的語義可能並不明顯,但確實很難。

語法可能相似,但是這兩種語言在功能上完全不同。

相關問題