[問題] 風格指南讀後疑問

請問一下像簡單的共用的 function
類似這種:
function isEmptyObject(obj) {
for (const key in obj) { return false };
return true;
}
要寫在 獨立一個 ts 檔 export,還是寫在 sharedModule 裡的服務呢

因為 sharedModule 所含的東西, 在 featureModule 不一定全部都會用到,整個載進來會不會不太好?

TypeScript guidelines 建議 interface 不要使用 I 當字首
不太能理解,因為這樣命名一看就知道是 interface了,沒寫 I 反而以為是資料

  1. 如果是 Utility 類型的 helper, 寫成 pure static class or function 都可以,要用時在單獨 import 即可
  2. TypeScript 內的 interface 是不會輸出到實際的 JavaScript ,所以說,通常會使用 class 的方式來代替 interface.
    如果你有使用 providers 時,他也是逼你使用 class,例如說
{ provide: xxSerivce, useClass: SMSService}

這裡的 xxService 就必須是 class 不能是 interface.
總結,基於以上的理由,使用 I 來表示 interface 已經沒有實質上的效益,就稍微改變一下觀念即可

@Oomusou_Xiao 關於第二點,有要補充的嗎?

2個讚

很感謝回覆!!

不過如果只是要 interface 的效果,沒有要 new ,這樣也是寫 class 嗎
其實不太清楚會輸出到實際的 JavaScript有什麼好處

另外再問一下剛剛忘記問的

每個 pipe(directive) 的內容不會太多,這樣把多個 pipe(directive) 放在同一支 xxx.pipes.ts (xxx.directives.ts),
這樣是可以接受的嗎

不用,interface 通常只是用來做資料格式限制跟型別檢查

每一個檔案應保持單一職責,所以不建議全部放在同一個檔案內

1個讚