序文この記事では、TS の基本的な概念ではなく、プロジェクトで TypeScript (以下、TS と呼びます) を React と組み合わせて使用することに焦点を当てます。 TS の型チェックには、オンライン TS ツール 👉TypeScript Playground を使用できます。 React要素関連React 要素関連の型には、主に
以下に使用例をいくつか示します。 const MyComp: React.FC<{ title: string; }> = ({title}) => <h2>{title}</h2>; // リアクトノード 定数a: React.ReactNode = ヌル 未定義 || <div>hello</div> || <MyComp title="world" /> || "abc" || 123 || 真実; // ReactElement と JSX.Element const b: React.ReactElement = <div>hello world</div> || <MyComp title="good" />; const c: JSX.Element = <MyComp title="good" /> || <div>hello world</div>; ネイティブDOM関連ネイティブ DOM 関連のタイプには、主に 簡単に言えば、 したがって、関係は React合成イベントReact では、ネイティブ イベントが React イベントに処理され、内部的にメモリが最適化され、イベント委任を通じて DOM イベント バインディングが削減されます。話を元に戻すと、React イベントの一般的な形式は [xxx]Event で、一般的なものは 次に例を示します。 // 入力ボックスにテキストを入力します const handleInputChange = (evt: React.ChangeEvent<HTMLInputElement>) => { コンソールログ(evt); }; // ボタンクリック const handleButtonClick = (evt: React.MouseEvent<HTMLButtonElement>) => { コンソールログ(evt); }; // モバイル端末タッチ div 定数 handleDivTouch = (イベント: React.TouchEvent<HTMLDivElement>) => { コンソールログ(evt); }; フックとの組み合わせフックの中には、TS と強く関連しているものばかりではありません。たとえば、useEffect は型定義に TS に依存しません。TS と強く関連している一般的なフックをいくつか見てみましょう。 使用状態初期値で型を記述できる場合は、useState に汎用変数を指定する必要はありません。 // ❌初期値 0 はすでにカウント型を記述しているので、これは不要です。const [count, setCount] = useState<number>(0); // ✅これはより良いです const [count, setCount] = useState(0); 初期値が null または undefined の場合、ジェネリックを通じて予想される型を手動で渡し、プロパティにアクセスするときにオプションのチェーンを通じて構文エラーを回避する必要があります。 インターフェースIUser{ 名前: 文字列; 年齢: 番号; } const [user, setUser] = React.useState<IUser | null>(null); console.log(ユーザー名?.名前); 参照を使うこのフックは非常に特殊で、通常は 2 つの用途があります。 DOM に接続して DOM 要素を取得するために使用されます。 // DOMに接続します。初期値はundefinedではなくnullです。汎用変数を指定する場合は、HTMLxxxElementを指定する必要があります。 // 呼び出し時に inputRef.current に値が必要であることが確実な場合は、null 以外のアサーションを使用して null の後に追加できます。 const inputRef = useRef<HTMLInputElement>(null!); const ハンドルクリック = () => { inputRef.current.focus(); // もちろん、非 null アサーションは必要ありません。inputEl.current?.focus() オプション チェーンを使用することもできます。} 戻る ( <入力ref={inputRef} /> <button onClick={handleClick}>クリック</button> ) 2. 変数を格納するために使用されます。関数コンポーネントの外部に格納されるため、useState と比較すると、非同期更新の問題や、 // 初期値を通じてジェネリック変数の型を自動的に指定します const sum = useRef(0); // .current を通じて sum.current = 3 を直接割り当てます。 // 非同期更新の問題はありません console.log(sum.current); // 3 セレクタの使用useSelector はストア内の状態を取得するために使用されます。最初の固定パラメータは関数であり、関数の入力パラメータはストアです。ストアの型 RootState は、事前にストア内で定義する必要があります。一般的な定義は次のとおりです。 store.ts 内: ルートリデューサーをストアに追加します。 エクスポート型 RootState = ReturnType<typeof rootReducer>; 使用する場合: const { var1, var2 } = useSelector((store: RootState) => store.xxx); カスタムフックuseState と同じ方法で配列を返す必要がある場合は、戻り値の最後に as const を使用して定数としてマークする必要があります。そうしないと、戻り値は共用体型であると推測されます。 定数useInfo = () => { 定数[年齢、年齢の設定] = useState(0); return [age, setAge] as const; // 型はタプル、[number, React.Dispatch<React.SetStateAction<number>>] }; redux関連アクションの定義には、公式に公開されている AnyAction を使用し、アクション内のキーと値のペアの制限を次のように緩和することができます。 「redux」からAnyActionをインポートします。 定数DEF_STATE = { カウント: 0, タイプ: '整数' }; // 制限を緩和するためにreduxのAnyActionを使用する function countReducer(state = DEF_STATE, action: AnyAction) { スイッチ(アクションタイプ){ ケース "INCREASE_COUNT": 戻る { ...州、 カウント: 状態.count + 1, }; ケース「DECREASE_COUNT」: 戻る { ...州、 カウント: 状態.count - 1, }; デフォルト: 状態を返します。 } } デフォルトの countReducer をエクスポートします。 規則サブコンポーネントの入力パラメータは、[コンポーネント名] Props という名前が付けられます。例: // たとえば、現在のコンポーネント名はInfoCardです エクスポートインターフェースInfoCardProps { 名前: 文字列; 年齢: 番号; } インターフェースタイプは大文字で始まります。 バックエンド インターフェイスの入力および出力パラメータのインターフェイスを記述し、jsdoc スタイルを使用して、次のようなエディターのプロンプトに便利なコメントを作成します。 エクスポートインターフェース GetUserInfoReqParams { /** 名前*/ 名前: 文字列; /** 年*/ 年齢: 番号; /** 性別*/ 性別: 文字列; } 他のキー名または値をどうすればよいか分からないですか? // キー名が不明で、キー値が数値型に制限されていることを示します export interface NotSureAboutKey { [キー: 文字列]: 数値; } // キー名と値が不明な場合は、次のインターフェースが任意のオブジェクトに適用されます。エクスポートインターフェースAllNotSure { [キー: 文字列]: 任意; } インターフェースでジェネリック変数を使用するにはどうすればいいですか?いわゆるジェネリックは事前定義された型です。その目的は、型定義におけるローカルな柔軟性を実現し、再利用性を向上させることです。通常、インターフェースではジェネリックを使用します。たとえば、次のようになります。 // 通常、インターフェースのジェネリック変数にはデフォルトの型を指定します。interface IHuman<T = unknown> { 名前: 文字列; 年齢: 番号; 性別: T; } // 他の場所で使用する場合 const youngMan: IHuman<string> = { 名前: 'zhangsan'、 年齢: 18歳 性別: '男性' } React プロジェクトでの TypeScript の使用に関するこの記事はこれで終了です。React での TypeScript の使用の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: 仮想マシンのLinux初心者がIPを設定し、ネットワークを再起動する
この記事では、Web ページ制作を学ぶ過程で習得すべきテクニックの一部を詳しく紹介します。これらの内...
<br />解決手順は次のとおりです。スタート -> 実行 -> reged...
<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...
効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...
今日は、最新の人気スクリプト 50 個を含むソース コードを共有します。現在、Mine Guard ...
データシート /* Navicat SQLite データ転送 ソースサーバー: school ソース...
境界線のスタイルborder-style プロパティは、表示する境界線の種類を指定します。 bord...
まずpostcss-pxtoremをインストールします: npm install postcss-p...
目次1. ACIDの特性トランザクション制御構文3. トランザクション同時実行例外1. ダーティリー...
最近、ウェブサイトを開発する際にトップに戻るボタンを作成する必要がありますが、私は主にバックエンドの...
この記事では、モバイルとPCで簡単なドラッグアンドドロップ効果を実現するためのTypescript ...
1.sshコマンドLinux では、ssh コマンドを使用して別のサーバーにログインできます。 2 ...
コード実装:コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...
easyui フレームワークのコードは次のとおりです。 css: .ファイルボックス{ フロート:...
環境変数の設定の簡単な説明プログラムは、環境によって異なる環境変数を必要とします。たとえば、実稼働環...