[typescript] Typescript ジェネリック制約 2 つの制約メソッド

Typescript ジェネリック制約

はじめに: 一般的な制約には 2 つのタイプがあり、より具体的なタイプを指定するものと、制約を追加するものがあります。
 

質問:

 

 

ここでは、ジェネリック関数を使用してイベント パラメーターの長さにアクセスし、エラーを報告します。

問題を解く:

(1). より具体的なタイプを指定するために使用します

function numtion<T>(event: T[]): T[] {
    console.log(event.length);
    return event
}
numtion(['aa'])

ここでは、仮パラメータの型の後に特定の型を指定する配列を追加し、戻り値の型に配列を追加します [ ]

配列にアクセス可能な長さ属性が必要である限り、型を T[] に変更します

理由の説明: デフォルトでは、ジェネリック関数の型変数は複数の型を表すことができ、どのプロパティにもアクセスできません。

説明:

T は任意の型を表すことができ、Length プロパティが存在しなければならないという保証はありません 

この時点で、ジェネリック関数に制約を追加して型を縮小する必要があります 

(2) 制約を追加する

interface myinterface {
    length: number
}


function numtion<T extends myinterface>(event: T): T {
    console.log(event.length);
    return event
}
numtion('aa')

これが解決策です interface を使用してインターフェイス名を宣言し、長さの型を指定し、最後に <T extends myinterface>  extends でインターフェイス名を追加します

説明:

 説明の制約を作成します インターフェイスの長さ インターフェイスは長さのプロパティを提供します

インターフェイスを使用して、extend を介してジェネリックに制約を追加します

制約は、渡された型に長さプロパティが必要であることを示しています


 

おすすめ

転載: blog.csdn.net/m0_64494670/article/details/129272034