class Thing extends ((function () {
return null;
})()) {
doThing() {
}
}
extends null
と言うのは本当に回りくどい方法ですが、タイプはチェックアウトしないので、厄介です。 チェッカーを満たすには、IIFEにStringConstructor
ようなダミーのctorタイプで注釈を付ける必要があります。
これは仕様によるものです。 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}をエクスポートします。
順序を入れ替えて動作しました。
最も参考になるコメント
これは興味深いケースです。TypeScript2.0では、
declare module 'swagger-client';
ようなモジュールswagger-clientを宣言します。 しかし、私がそれを次のように使おうとすると:エラー
Type 'any' is not a constructor function type
ます。