Comento | Week 2. TypeScript & Clean Code


Week 2: TypeScript & Clean Code


ガイダンス

1. JS to TS


1.1 JSの短い歴史

  • ブラウザ用のスクリプト言語:
  • Webページの短いコードとして使用されるため
  • しかし、JSの発展に伴い、
  • も非Web用途に用いられるようになった
  • JavaScriptの利点を持つ「動的タイプ」は、予期せぬエラーを引き起こす可能性があります.

    1.2タイプのスクリプトの利点

  • プログラム(実行時)を実行する前にtype chekcingでプログラムエラーを検索します.
  • JavaScriptエラーだけでなく、ユーザーの一部のエラー(エラー)
  • も修正できます.
    コンパイル時に
  • タイプのエラーが発生し、コード量が大きい場合は生産性が高い.
  • コードはタイプ接続であるため、関連するコード間を容易に移動することができる.
  • 変数名/関数名を容易に再パッケージし、関数のパラメータ、戻り値タイプを決定することができる.
  • MSを開発し、絶えずバージョンを更新し、Vscodeは
  • をサポートしている.
  • チュートリアルは良いです(ドキュメントの漢徳化、基礎から高級機能まで)
  • 2.基本文法


    2.1 any

  • 学習初期は、逆にタイプを指定して簡単に開発できるので、徐々に改善する方法も悪くない
  • が未知のタイプを表す場合
  • ユーザが送信データ
  • 動的コンテンツ(例えば
  • サードパーティライブラリ)
  • 2.2 null and undefined

  • null、すべての未定義タイプのサブタイプ
  • は、他のタイプとともにUnionタイプとして定義される場合によく用いられる.
  • StirctNullChecksを使用すると、null/定義されていないanyと各タイプの
  • のみを割り当てることができます.

    2.3関数

  • パラメータにタイプを追加し、戻り値にタイプを追加
  • 2.4 interface

  • タイプチェック用、変数、関数、クラス
  • にマッピング
  • の様々なタイプの属性からなる新しいタイプを定義するのと同様です.
  • オプション属性、readonly属性、unionタイプ適用
  • 2.5 interface vs type

  • インタフェースは、属性を拡張/追加できますが、タイプはサポートされていません.
  • インタフェースは、1つの形式でのみ使用できます.タイプはunioi or tuple
  • として使用できます.

    2.6 enum vs union

  • enumは、タイプスクリプトで独自に実装される機能です.
  • enumの場合、JSオブジェクトに変換されます.
  • 2.7 mini practice

  • サーバから受信データについては、より汎用的なデータ
  • を記述することが望ましい.
  • ほとんどの場合、データの深さは深さではありません.
  • また、データ構造が変化する可能性があるので、変化に対応するために、より一般的にデータを記述することが望ましい.
    // Me
    export type ClassStatus = "모집전" | "모집중" | "모집완료";
    
    export interface CommonCamp {
      title: string;
      startDate: Date; //string?
    }
    
    export interface HotCamp extends CommonCamp {
      status: ClassStatus;
    }
    
    export interface SaleCamp extends CommonCamp {
      job: string;
      field: string;
    }
      
    
    // Mentor
    // TODO: 실제 프로젝트보고 수정할수도 있음
    export interface Camp {
      id: number;
      type: "popular" | "discount";
      status: ClassStatus;
      category?: string;
      skill?: string;
      campName: string;
      thumbnail: string;
      dateStart: string;
    }
    

    3. Think about Type

  • フロントの立場から見ると、Backendはデータを受信するので、深さデータは転送されません.
  • とは逆に、汎用タイプを指定し、変化にうまく対応できるタイプ
  • を設定することが望ましい.

    4.コードの作成+コラボレーションしやすいコード


    4.1基本

  • 類名は名詞として用いられ,有意義な名前を持つ.
  • 変数は意図的です
  • 関数はオブジェクトの動作を表すため、(現在型)動詞を使用して名前を付けます.
  • メンバー変数、パラメータ名、およびローカル変数名は、LowerCamelCase方式に従います.
  • 定数名CONTENT CASE方式
  • を採用

    4.2コメント

  • 不要な注釈を排除し、管理意図
  • を明確にする.
  • 重複注釈を削除
  • の意図を直感的に把握できれば,注釈を残す必要はない.
  • 情報配信コメント
  • コードに強調すべき点がある、または直感的に理解できない場合は、注釈
  • を提供する情報を残すべきである.
  • 毎日注釈
  • 以降のさらなる実施が必要な場合に利用可能である.
  • 4.3コード複雑度管理

  • 良い開発者は理解しやすいコード
  • を書く
  • の周期的な再包装により、
  • を徐々に改善する.
  • 低複雑度コード
  • ロール明確コード
  • クラスは、1つのロール
  • のみを実行します.
  • 形式のコード
  • 行あたり80~120文字の長さを制限し、適切なインデントを考慮
  • 互いに密接な概念は、1つのファイル
  • に垂直である.
  • 変数宣言
  • 、使用位置が最も近い位置にある

    4.4コード品質管理

  • 異常管理
  • テスト管理
  • 境界条件試験
  • 4.5童子軍ルール

  • 時間が過ぎるとコードが乱れ、童子軍ルールを導入することができます.
  • キャンプ場はそれを発見した時より良い場所のはずのルール
  • Leave the campground cleaner than you found it