メソッドのインターフェイスタイプパラメータを制限する

ヒューゴセレノフェレイラ

メソッドは、そのインターフェイスのtypeパラメータが特定の制約を尊重する場合にのみ意味があることを伝えようとしています。これが(コンパイルされていない)例です:

interface Array<T> {
    fold<B>(base: B, f: (acc: B, e: T) => B): B
    sum(): T is number
}

Array.prototype.fold = function(base, f) {
    let result = base
    for (let i = 0; i < this.length; i++)
        result = f(result, this[i])
    return result
}

Array.prototype.sum = function() {
    return this.fold(0, (acc, e) => acc + e)
};

[1, 'a', 3].sum() //? 1a3  <-- should be an error!

ここで、私はそれsumが意味をなす場合にのみ意味があることを伝えようとしていましT extends number

アルアンハダッド

あなたは正しい考えを持っています、ちょうど間違った構文です。

これはあなたがそれを書く方法です。

interface Array<T> {
  sum(this: number[]): number;
}

this合成パラメーターである型をどのように使用したかによって、関数のアリティが変更されないことに注意してください。使用しようとした構文は、興味深い推測ですが、別の目的、つまりタイプガードに使用されています。

興味深い部分は、上の型注釈thisがインターフェースの型よりも優先されることです。ジェネリックパラメーターを宣言して、に適用しthis、制限をT設定して、構成できるようにすることもできます。たくさんの柔軟性があります。

これは、インターフェースタイプとそれを洗練したものの両方を組み合わせた興味深いものです this

interface Array<T> {
  flatten(this: T[][]): T[];
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

インターフェイスを実装するtypescriptクラスメソッドを制限する

分類Dev

インターフェイスメソッドのパラメータをクラス実装ごとに具象型にするように強制します

分類Dev

Scalaでメソッドパラメータを特定のタイプに制限する

分類Dev

インターフェイスの実装中のメソッドの制限

分類Dev

クラスまたはインターフェイスメソッドのタイプを使用する

分類Dev

タイプパラメータのクラスを返すメソッドを使用してインターフェイスを実装します

分類Dev

IntelliJがインターフェイスのメソッドパラメータ名を置き換える

分類Dev

インターフェイスのスーパークラスでタイプを制限する

分類Dev

Spring @Beanメソッドでインターフェースを返す際の制限

分類Dev

Java:複合クラスのメソッドへのアクセスを制限する(インターフェースと構成)

分類Dev

Javaのメソッドへのアクセスを制限するためのデザインパターン

分類Dev

Proguardキープインターフェイスメソッドのパラメータ名

分類Dev

Proguardキープインターフェイスメソッドのパラメータ名

分類Dev

インターフェース内のパラメーターとしてインターフェースを取るメソッド

分類Dev

java-スーパーインターフェースメソッドをオーバーライドするサブインターフェース

分類Dev

インターフェイスメソッドのパラメータタイプとリターンタイプ

分類Dev

ユーザーインターフェイススレッドでの実行を1つのフラグメントに制限する

分類Dev

スーパータイプを渡すJavaインターフェイスメソッド

分類Dev

パラメータタイプの制限とEventSourceメソッドのカウントの理由

分類Dev

ライフタイムパラメーターを関数のパラメーターのスコープに制限する

分類Dev

ポインターレシーバーメソッドで既存の型をラップするインターフェイスを作成する

分類Dev

異なるメソッドパラメータを持つJavaインターフェイス

分類Dev

インターフェイスメソッドのサブタイプを実装するJava

分類Dev

インターフェイスメソッドをパラメータとして渡す

分類Dev

メソッドを呼び出し元のタイプパラメーターの値のサブセットに制限する

分類Dev

非ローカルパッケージのインターフェイスメソッドを拡張する

分類Dev

ファンクショナルインターフェイスパラメータータイプのメソッドのJavaジェネリック

分類Dev

Spock と Grails 2 を使用してサービス メソッドのインターフェース パラメーターをモックする方法は?

分類Dev

パラメータタイプを制限する

Related 関連記事

  1. 1

    インターフェイスを実装するtypescriptクラスメソッドを制限する

  2. 2

    インターフェイスメソッドのパラメータをクラス実装ごとに具象型にするように強制します

  3. 3

    Scalaでメソッドパラメータを特定のタイプに制限する

  4. 4

    インターフェイスの実装中のメソッドの制限

  5. 5

    クラスまたはインターフェイスメソッドのタイプを使用する

  6. 6

    タイプパラメータのクラスを返すメソッドを使用してインターフェイスを実装します

  7. 7

    IntelliJがインターフェイスのメソッドパラメータ名を置き換える

  8. 8

    インターフェイスのスーパークラスでタイプを制限する

  9. 9

    Spring @Beanメソッドでインターフェースを返す際の制限

  10. 10

    Java:複合クラスのメソッドへのアクセスを制限する(インターフェースと構成)

  11. 11

    Javaのメソッドへのアクセスを制限するためのデザインパターン

  12. 12

    Proguardキープインターフェイスメソッドのパラメータ名

  13. 13

    Proguardキープインターフェイスメソッドのパラメータ名

  14. 14

    インターフェース内のパラメーターとしてインターフェースを取るメソッド

  15. 15

    java-スーパーインターフェースメソッドをオーバーライドするサブインターフェース

  16. 16

    インターフェイスメソッドのパラメータタイプとリターンタイプ

  17. 17

    ユーザーインターフェイススレッドでの実行を1つのフラグメントに制限する

  18. 18

    スーパータイプを渡すJavaインターフェイスメソッド

  19. 19

    パラメータタイプの制限とEventSourceメソッドのカウントの理由

  20. 20

    ライフタイムパラメーターを関数のパラメーターのスコープに制限する

  21. 21

    ポインターレシーバーメソッドで既存の型をラップするインターフェイスを作成する

  22. 22

    異なるメソッドパラメータを持つJavaインターフェイス

  23. 23

    インターフェイスメソッドのサブタイプを実装するJava

  24. 24

    インターフェイスメソッドをパラメータとして渡す

  25. 25

    メソッドを呼び出し元のタイプパラメーターの値のサブセットに制限する

  26. 26

    非ローカルパッケージのインターフェイスメソッドを拡張する

  27. 27

    ファンクショナルインターフェイスパラメータータイプのメソッドのJavaジェネリック

  28. 28

    Spock と Grails 2 を使用してサービス メソッドのインターフェース パラメーターをモックする方法は?

  29. 29

    パラメータタイプを制限する

ホットタグ

アーカイブ