[解決済み] TypeScriptの型定義におけるアンパサンド(&)の意味とは?
2022-09-10 14:57:56
質問
の60359行目で この型定義ファイル には、次のような宣言があります。
type ActivatedEventHandler = (ev: Windows.ApplicationModel.Activation.IActivatedEventArgs & WinRTEvent<any>) => void;
は何を意味しているのでしょうか?
&
の記号は、この文脈では何を意味するのでしょうか?
どのように解決するのですか?
&
をタイプポジションにすると
交差点
の型を意味します。
交差点タイプに関するtypescript docsからの詳細。
https://www.typescriptlang.org/docs/handbook/2/objects.html#intersection-types
上記リンク先のドキュメントからの引用です。
交差型はunion型と密接に関係していますが、その使い方は非常に異なります。交差型は複数の型を1つにまとめます。これにより、既存の型を足して、必要な機能をすべて備えた1つの型を得ることができます。例えば、Person & Serializable & Loggableは、PersonとSerializableとLoggableのすべてを備えた型です。つまり、この型のオブジェクトは、3つの型のすべてのメンバを持つことになります。
例えば、一貫したエラー処理を行うネットワークリクエストがあった場合、エラー処理をそれ自身の型に分離し、単一のレスポンスタイプに対応する型と統合することができます。
interface ErrorHandling {
success: boolean;
error?: { message: string };
}
interface ArtworksData {
artworks: { title: string }[];
}
interface ArtistsData {
artists: { name: string }[];
}
// These interfaces are composed to have
// consistent error handling, and their own data.
type ArtworksResponse = ArtworksData & ErrorHandling;
type ArtistsResponse = ArtistsData & ErrorHandling;
const handleArtistsResponse = (response: ArtistsResponse) => {
if (response.error) {
console.error(response.error.message);
return;
}
console.log(response.artists);
};
関連
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] C++のPOD型とは何ですか?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み] Typescript によるインターフェース型チェック
-
[解決済み] タイプスクリプトのレコードタイプとは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み] なぜエイリアス関数をタイプして、キャストせずに使用できるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン