TypeScript 開発のための 6 つの実用的なヒント

TypeScript 開発のための 6 つの実用的なヒント

この記事では、TypeScript を使用してアプリケーションを開発した私の経験の一部をまとめます。その前に、TS コードをすぐに実行できる quokka.js という VSCODE プラグインをお勧めします。

使い方は、ctrl+shipt+p、キーワードquokkaを入力

Enterキーを押すと、入力後すぐにコードが実行されます。

1. 開発前にエンティティの種類を決定する

正式なコーディングの前に、インターフェース ドキュメントがない場合は、データ ディクショナリを取得し、データ ディクショナリに従ってプロジェクト内のエンティティ タイプを定義するのが最適です。たとえば、データ ディクショナリにユーザー テーブルとエンタープライズ テーブルがある場合は、types フォルダーを作成し、対応するタイプを別のファイルに配置できます。ディレクトリは次のとおりです。

種類
    ユーザー.ts
    株式会社
    ...

エンティティ タイプを定義するには、タイプよりもセマンティックなインターフェースを使用することをお勧めします。

インターフェース ユーザー{
    id:文字列
    名前:文字列
}

2. インターフェースをリクエストするときは、使用する必要があるフィールドのみを定義する必要があります。

型を定義するときは、使用する必要があるフィールドのみを定義する必要があります。使用されないフィールドは定義する必要はありません。バックエンドから返されるデータのタイプは、フロントエンドでタイプを指定して TS が判断する必要があるためです。フロントエンドでタイプを指定しないと、TS はそれを判断できません。

たとえば、バックエンドから返されるデータは次のようになります。

ユーザー:{
    id:1,
    名前:'xiaoming',
    性別:0
}

定義されているタイプは次のとおりです。

インターフェース ユーザー{
    id:番号、
    名前:文字列
}

この場合、TS はユーザーに ID と名前があるかどうかのみをチェックし、性別は無視します。

3. 列挙型を使用する

性別(男性、女性)、管理者種別(スーパー管理者、一般ユーザー)、会員種別(一般ユーザー、VIP、スーパーVIP)などのデータ構造は、列挙型を使用した定義に適しており、値としても使用できます。

例えば:

//列挙型を使用してメンバー型を定義します enum UserType{
    共通=0、
    VIP=1、
    スーパーVIP=2
}
クラスUser{
    id:文字列
    名前:文字列
    タイプ:ユーザータイプ
}
userList:User[]=[] とします

ユーザーリスト.push({
    id:'001',
    名前:「ジャック」
    type:UserType.SuperVIP //列挙型で定義された型を値として使用できます})

列挙型は、以下に示すように文字列にすることもできます。使用方法は上記と同じです。

列挙型ユーザータイプ{
    共通 = 'DiaoSi'、
    VIP='LowBVIP'、
    スーパーVIP='スーパーVIP'
}

4. DOM要素の型は通常通り指定する

DOM 要素の場合は、型があるため、何も使用しないでください。
一般的に、すべてのタグは HTMLElement から継承され、タグごとにタイプが異なります。このタイプは多くの場合、決まりきったものです。たとえば、ビデオ要素のタイプは HTMLVideoElement、div 要素のタイプは HTMLDivElement、キャンバス要素のタイプは HTMLCanvasElement などです。実際には、よく使用されるタイプはそれほど多くありませんが、簡単にリストします。

要素:HTMLElement=null とします

video:HTMLVideoElement=null とします

div:HTMLDivElement=null とします

キャンバス:HTMLCanvasElement = null とします

let e:Event =null //イベントオブジェクト e.target

コードヒントを取得できるように、DOM要素タイプを必ず指定してください。

ファイルをアップロードするときにタイプを指定する方法の補足です。onChange メソッドを Input 要素にバインドします。メソッドは次のとおりです。

onChange(イベント: イベント): void {
  if ((event.target as HTMLInputElement).files && (event.target as HTMLInputElement).files.length) {
    const [ファイル] = event.target.files;
  }
}

5. オブジェクトの型の指定方法

オブジェクトをパラメータとして受け取る関数があります。型はどのように指定すればよいでしょうか?

まず第一に、何も与えないでください。常に何も与えないでください。これは低レベルです。オブジェクトにキーや値など何が含まれているかを考えてください。キーは文字列型である必要があります。値は特定のニーズによって異なります。値が数値または文字列のみである場合は、number|string を使用します。何でも許容される場合は、any を使用します。

//オブジェクトの型を定義します。キーは通常文字列で、値はインターフェース ObjType{ に渡すことができます。
	[キー:文字列]:任意
}
関数 deepCopy(obj:ObjType){
    for(let key in obj){
        console.log(obj[キー])
    }

}

obj={name:"Jack"}とします
ディープコピー(obj)

6. 構造体に値を割り当てるときに型を指定する方法

オブジェクトを受け取ってオブジェクト内のパラメータを分解する関数があります。構造体によって取得されたオブジェクト プロパティの型をどのように指定しますか? コードは次のとおりです。

定数ユーザー={
    名前:「ジャック」
    年齢:10歳
    友達:[{id:0,name:'ピーター',connect:100},{id:1,name:'アリス',connect:69}]
}

インターフェースフレンド{
    id:番号、
    名前: 文字列、
    接続:番号
}


function handleFriends({friends}){//友達のタイプを指定する方法 friends.map(item=>item.connect)
}

10秒間考えてください。

10

9

8

7

6

5

4

3

2

1

回答を投稿してください:

インターフェースフレンド{
    id:番号、
    名前: 文字列、
    接続:番号
}

関数handleFriends({friends}:{friends:Friend[]}){
    友達.map(item=>item.connect)
}

これは、React フックでより一般的に使用されます。

要約する

TypeScript 開発のヒントを共有するこの記事はこれで終わりです。TypeScript 開発に関するより関連性の高いヒントについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 知らないかもしれない実用的なTypeScriptのヒント
  • TypeScriptはリソースファイルを参照し、例外を処理するときに見つからないことを通知します。
  • 実用的な TypeScript ワンライナー 7 つを共有する

<<:  Ubuntu 18.0.4 MySQL 8.0.20 のインストールと設定方法のグラフィックチュートリアル

>>:  Linux オペレーティング システムに Apache サービスをインストールする方法

推薦する

CSS スタイル分類入門(基礎知識)

CSSスタイルの分類1. 内部スタイル ---- インラインスタイルスタイルタグの使用 <ス...

HTML 画像 img にハイパーリンクを追加した後の醜い青い境界線の問題を解決する

HTML画像にハイパーリンクを追加すると醜い青い枠線が表示される次のように:解決: CSS スタイル...

nginxを使用して画像サイズを動的に変換し、サムネイルを生成します。

Nginx ngx_http_image_filter_module モジュール (nginx バ...

Linux 7.6 バイナリに MySQL 8.0.27 をインストールする詳細な手順

目次1. 環境整備1.1 オペレーティング システムのバージョン1.2 ディスク容量1.3 ファイア...

モバイル Web WAP には Bootstrap と jQuery Mobile のどちらを使用すべきか

問題を解決するBootstrap は、次の問題を解決する CSS フレームワークです。デバイス間での...

MySQL MVCCメカニズム原理の詳細な説明

目次MVCCとはMySQL ロックとトランザクション分離レベルMySQL 元に戻すログMVCCの実装...

Linux システム ディレクトリ sys、tmp、usr、var の詳細な説明。

Linux 初心者から Linux マスターへの成長の道: Linux システム ディレクトリ s...

CSS でホバー ドロップダウン メニューを実装する方法

いつものように、今日は非常に実用的な CSS 効果についてお話します。マウスがボタンに移動すると、ド...

MySQLデータベースで外部キー制約を使用する必要があるかどうかの詳細な説明

1. はじめに外部キー制約を使用するかどうかという話題は、すでに決まり文句になっています。学校では、...

MysqlクエリJSON結果に関連する関数の概要

JSON 形式のフィールドは、MySQL 5.7 で追加された新しい属性ですが、基本的には文字列とし...

CSSセレクタを使用してラベルスタイルを設定するサンプルコード

CSS セレクターHTML タグにスタイルを設定すると、タグの属性を設定できます。 <div ...

Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

1. Linuxファイアウォールの基礎Linux ファイアウォール システムは主にネットワーク層で動...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

Vue で手ぶれ補正を実装するためのサンプルコード

手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...

Vue でフルスクリーンを実装し、フルスクリーン終了を監視する

目次序文:実装手順:完全なソースコード:詳細情報:序文: vueでは、デフォルトページを実装し、di...