2016-04-11 15 views
0

私たちのためにコンストラクタ関数を作成するライブラリがあります。 最初のパラメータとしてObjectを渡すことができ、このプロパティはコンストラクタ関数に直接追加されます。 let bar = new Tiger('foo', 'bar') コンストラクタ関数の型定義とコンストラクタ関数のプロパティ

  • コンストラクタのプロパティにTiger.leg = 4
  • 二意志を変更するインスタンスを作成し

    1. :私たちは今、2の可能性を持っている

      let Tiger = can.Construct.extend({ 
          leg: 3 
      }); 
      

      :よう

      この例では見ることができます投げる私が代わりにタイプanyを返す場合

      declare namespace can { 
      
          interface ConstructFactory { 
           new(...args: any[]): Construct; 
          } 
      
          class ConstructStatic { 
           static extend(staticProperties: Object): ConstructFactory; 
          } 
      
          class Construct extends ConstructStatic { 
           constructor(...args: any[]); 
          } 
      } 
      

      :私の現在のタイプdefinitiosとエラー

      プロパティ「脚」タイプのConstructFactoryに出

      私の現在の型定義は次のようになりますしません。 ConstructFactoryの場合、Tiger.legはエラーをスローしませんが、コンストラクターの定義が失われたため、インスタンスを作成できません。

    答えて

    1

    私は、これはあなたが探しているものんだと思う:これはあなたがバーのサポートを入力与える

    declare namespace can { 
    
        interface ConstructFactory { 
         new(...args: any[]): Construct; 
        } 
    
        class ConstructStatic { 
         static extend<T>(staticProperties: T): ConstructFactory & T; 
        } 
    
        class Construct extends ConstructStatic { 
         constructor(...args: any[]); 
        } 
    } 
    
    
    let Tiger = can.Construct.extend({ 
        leg: 3 
    }); 
    
    Tiger.leg = 4 
    
    let bar = new Tiger('foo', 'bar') 
    
    +0

    : 'インタフェースConstructFactoryを { new(... args:任意の[]):コンストラクト& T; } ' –

    関連する問題