編碼指南
命名
- 使用 PascalCase 方式對類進行命名.
- 接口命名中不要使用前綴字母 I .
- 使用 PascalCase 方式對枚舉值進行命名.
- 使用 camelCase 方式對函數進行命名.
- 使用 camelCase 方式對屬性和本地變量進行命名.
- 私有屬性命名不要使用前綴 _ .
- 盡可能在命名中使用整個單詞 .
組件
- 每個邏輯組件一個文件 (例如: parser, scanner, emitter, checker).
- 不要添加新文件. :)
- 帶有".generated.*"后綴的文件是自動生成的,不要手動去修改.
類型
- 除非您需要跨多個組件共享,否則不要導出類型/函數.
- 不要向全局命名空間引入新類型/值.
- 共享類型應在 types.ts 中定義.
- 在文件中,應首先輸入類型定義.
null 和 undefined
- 使用 undefined , 不要使用 null .
一般假設
- 將節點,符號等對象視為創建它們的組件之外的不可變對象。 不要改變它們。
- 創建后,默認情況下將數組視為不可變.
類
- 為保持一致性,請不要在核心編譯器管道中使用類。 請改用函數閉包.
標志
- 應該將類型上超過2個相關的布爾屬性轉換為標志。
注釋
- 對函數,接口,枚舉和類使用JSDoc樣式注釋。
字符串
- 使用雙引號.
- 用戶可見的所有字符串都需要進行本地化(在diagnosticMessages.json中創建一個條目)。
診斷信息
- 在句子末尾使用句號.
- 對不確定的實體使用不定的文章.
- 應該命名確定的實體(這是為變量名,類型名等等。).
- 在陳述規則時,主題應該是單數的 (e.g. "An external module cannot..." instead of "External modules cannot...").
- 使用現在時.
診斷消息代碼
診斷分為一般范圍。 如果添加新的診斷消息,請使用大于相應范圍中最后使用的數字的第一個整數。
- 1000 句法消息的范圍
- 2000 用于語義消息
- 4000 用于聲明發出消息
- 5000 用于編譯器選項消息
- 6000 用于命令行編譯器消息
- 7000 對于noImplicitAny消息
一般構造
出于各種原因,我們避免某些結構,并使用我們自己的一些結構。 其中:
- 不要使用 for..in 語句; 相反,使用 ts.forEach , ts.forEachKey 和 ts.forEachValue 。 請注意它們的語義略有不同。
- 當它不是非常不方便時,嘗試使用 ts.forEach , ts.map 和 ts.filter 而不是循環。
風格
- 使用箭頭函數而不是匿名函數。必要時僅限制環繞箭頭功能參數。例如, (x)=> x + x 錯誤,但以下是正確的:
- x => x + x
- (x,y) => x + y
- <T>(x: T, y: T) => x === y
- 始終用花括號環繞循環和條件體。 允許在同一行上的語句省略大括號.
- 開放的花括號總是與任何必要條件都在同一條線上.
- 帶括號的構造應該沒有周圍的空格。單個空格在這些構造中使用逗號,冒號和分號。 例如:
- for (var i = 0, n = str.length; i < 10; i++) { }
- if (x < 10) { }
- function f(x: number, y: string): void { }
- 每個變量語句使用一個聲明
- (i.e. 使用var x = 1; var y = 2; 而不是 var x = 1, y = 2;).
- else 與閉合的大括號分開.
- 每個縮進使用4個空格.
原文地址: https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines
總結
在實際開發過程中,可能有些編碼風格和文中的有不同,但只要風格統一就好。不要不同的風格混搭使用。
比如:
- 字符串不要一會使用單引號,一會使用雙引號
- 縮進有的文件使用2個空格,有的文件使用4個