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