Typescript: タイプ「any」はコンストラクター関数タイプではありません

作成日 2015年09月01日  ·  3コメント  ·  ソース: microsoft/TypeScript

class Thing extends ((function () {
    return null;
})()) {
    doThing() {
    }
}

extends nullと言うのは本当に回りくどい方法ですが、タイプはチェックアウトしないので、厄介です。 チェッカーを満たすには、IIFEにStringConstructorようなダミーのctorタイプで注釈を付ける必要があります。

By Design

最も参考になるコメント

これは興味深いケースです。TypeScript2.0では、 declare module 'swagger-client';ようなモジュールswagger-clientを宣言します。 しかし、私がそれを次のように使おうとすると:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

エラーType 'any' is not a constructor function typeます。

全てのコメント3件

これは仕様によるものです。 nullを拡張するためにサポートされている唯一の形式は、 extends nullであり、型に構成シグネチャを持つ値を返す必要があります。 このシナリオでは、意図したよりもユーザーエラーが発生する可能性が高いため、ワイルドカードとして除外しました。 これが必要となる実際のユースケースがあるかどうかを確認するのは興味深いことです。

これは興味深いケースです。TypeScript2.0では、 declare module 'swagger-client';ようなモジュールswagger-clientを宣言します。 しかし、私がそれを次のように使おうとすると:

import * as Swagger from 'swagger-client';

class Swagger extends Swagger {
  pet: any;
  constructor() {
    super({ 
      url: config.get('spec.petstore'),
      usePromise: true
    });
  }
}

エラーType 'any' is not a constructor function typeます。

次のようにインデックスファイルからインポートすると、このエラーが発生しました。

'。'から{Derived、Base}をインポートします。

派生クラスは、基本クラスの前にindex.tsにリストされていました。

'./Derived'から{Derived}をエクスポートします。
'./Base'から{Base}をエクスポートします。

順序を入れ替えて動作しました。

このページは役に立ちましたか?
0 / 5 - 0 評価