2017-01-30 15 views
1

にクラス自体(この)に単純なケースのパラメータを比較します。私が行ったようには、活字体

// A common base class 
class A { 
} 

class B extends A { 
    getSomething(parent?: A): number { 
     if (!parent || parent == this) { 
      return 42; 
     } else { 
      return 0; 
     } 
    } 
} 

をしかし、thisを使用することはできません。 TSコンパイラからのエラーは次のとおりです。

オペレータ '=='は 'A'と 'this'の型には適用できません。

本当に役に立ちません。ここで正しいアプローチは何ですか?

+0

typescriptコンパイラからどのようなエラーが表示されますか? –

+0

私の質問が更新されました。 –

+1

'B'の定義は何ですか? –

答えて

1

パラメータとして渡されたオブジェクトがオブジェクト自体と同じであるかどうかを知りたいと思われるようです。

class A {} 
class B extends A { 
    getSomething(parent?: A): number { 
     if (parent == this) { 
      return 42; 
     } else { 
      return 0; 
     } 
    } 
} 

私はちょうど活字体コンパイラの遊び場でそのコードを実行しました:http://www.typescriptlang.org/play/

をそして、それはコンパイルされませんでした、おそらくそれはあなたのtypescriptですコンパイラをアップグレードする時が来ましたか!

(これまでの私の回答は、ユニオンタイプに関するものでしたが、あなたの質問を更新してから関連性がなくなっています)。

+0

申し訳ありませんが、クラスとパラメーターの型が実際に同じ基本クラスに属していることを明確にしませんでした。私は私の質問を更新しました。この例は実際には完全なクラス階層であるため、ここでは共用体型は実現できません。 –

+0

答えが私の側にある場合、より深く見るよう促しました。 –