這個(gè)編碼規(guī)范是給TypeScript開發(fā)團(tuán)隊(duì)在開發(fā)TypeScript時(shí)使用的。
對于使用TypeScript的普通用戶來說不一定適用,但是可以做為一個(gè)參考。
命名
- 使用PascalCase為類型命名。
- 不要使用
I做為接口名前綴。
- 使用PascalCase為枚舉值命名。
- 使用camelCase為函數(shù)命名。
- 使用camelCase為屬性或本地變量命名。
- 不要為私有屬性名添加
_前綴。
- 盡可能使用完整的單詞拼寫命名。
組件
- 1個(gè)文件對應(yīng)一個(gè)邏輯組件 (比如:解析器,檢查器)。
- 不要添加新的文件。 :)
.generated.*后綴的文件是自動(dòng)生成的,不要手動(dòng)改它。
類型
- 不要導(dǎo)出類型/函數(shù),除非你要在不同的組件中共享它。
- 不要在全局命名空間內(nèi)定義類型/值。
- 共享的類型應(yīng)該在
types.ts里定義。
- 在一個(gè)文件里,類型定義應(yīng)該出現(xiàn)在頂部。
null 和 undefined:
- 使用 undefined,不要使用 null。
一般假設(shè)
- 假設(shè)像Nodes,Symbols等這樣的對象在定義它的組件外部是不可改變的。不要去改變它們。
- 假設(shè)數(shù)組是不能改變的。
類
- 為了保持一致,在核心編譯鏈中不要使用類,使用函數(shù)閉包代替。
標(biāo)記
- 一個(gè)類型中有超過2個(gè)布爾屬性時(shí),把它變成一個(gè)標(biāo)記。
注釋
為函數(shù),接口,枚舉類型和類使用JSDoc風(fēng)格的注釋。
字符串
- 使用雙引號(hào)
""
- 所有要展示給用戶看的信息字符串都要做好本地化工作(在diagnosticMessages.json中創(chuàng)建新的實(shí)體)。
錯(cuò)誤提示信息
- 在句子結(jié)尾使用
.。
- 對不確定的實(shí)體使用不定冠詞。
- 確切的實(shí)體應(yīng)該使用名字(變量名,類型名等)
- 當(dāng)創(chuàng)建一條新的規(guī)則時(shí),主題應(yīng)該使用單數(shù)形式(比如:An external module cannot...而不是External modules cannot)。
- 使用現(xiàn)在時(shí)態(tài)。
錯(cuò)誤提示信息代碼
提示信息被劃分類成了一般的區(qū)間。如果要新加一個(gè)提示信息,在上條代碼上加1做為新的代碼。
- 1000 語法信息
- 2000 語言信息
- 4000 聲明生成信息
- 5000 編譯器選項(xiàng)信息
- 6000 命令行編譯器信息
- 7000 noImplicitAny信息
普通方法
由于種種原因,我們避免使用一些方法,而使用我們自己定義的。
- 不使用ECMAScript 5函數(shù);而是使用core.ts這里的。
- 不要使用
for..in語句;而是使用ts.forEach,ts.forEachKey和ts.forEachValue。注意它們之間的區(qū)別。
- 如果可能的話,嘗試使用
ts.forEach,ts.map和ts.filter代替循環(huán)。
風(fēng)格
- 使用arrow函數(shù)代替匿名函數(shù)表達(dá)式。
-
只要需要的時(shí)候才把a(bǔ)rrow函數(shù)的參數(shù)括起來。
比如,(x) => x + x是錯(cuò)誤的,下面是正確的做法:
x => x + x
(x,y) => x + y
<T>(x: T, y: T) => x === y
- 總是使用
{}把循環(huán)體和條件語句括起來。
- 開始的
{總是在同一行。
-
小括號(hào)里開始不要有空白.
逗號(hào),冒號(hào),分號(hào)后要有一個(gè)空格。比如:
for (var i = 0, n = str.length; i < 10; i++) { }
if (x < 10) { }
function f(x: number, y: string): void { }
- 每個(gè)變量聲明語句只聲明一個(gè)變量
(比如 使用 var x = 1; var y = 2; 而不是 var x = 1, y = 2;)。
else要在結(jié)束的}后另起一行。