2016-12-16 20 views
0

私は、宣言からの拡張されたインポートの簡潔な方法を探しています。Typescriptでショートハンド環境モジュールのインポートを拡張する

Iは、以下を試みたが、の誤差を持って:error TS2507: Type 'any' is not a constructor function type.例コードは以下である:

base.d.ts

declare module 'base'; 

derived.ts

import * as Base from 'base'; 

class Derived extends Base { // error TS2507: Type 'any' is not a constructor function type. 
} 

答えて

1

簡略化された周囲モジュールは値にのみ適しており、タイプには適していません。

これもコンパイルできない、と私はそれは驚きとして来るとは思わない:

import * as Base from 'base'; 

interface X { 
    foo: Base.Foo;//error TS2694: Namespace ''base'' has no exported member 'Foo' 
} 


function f(s: string) {} 

f(Base.Foo); // note: no error here, for the same Base.Foo 

短縮形のモジュールは、「すべてが内部anyタイプを持っている」と言うための手段として導入されました。クラスと型にはanyというアナログはありません。宣言を完全にしないとクラスを拡張することはできません。

+0

ええ、私はこれをしなければなりませんでした: 'declare module 'base' { interfaceコンストラクタ{ new(... args:any []):this; } const _:コンストラクタ。 export = _; } ' –

関連する問題