タイプスクリプトの「extends」に対して「declare」が機能しないのはなぜですか?

grigoryvp

私は今Typescriptを調べていて、奇妙なことに出くわしました。npmデフォルトでインストールされている「[email protected]」を使用しています。declare'sa varのコードがあり、それを割り当てに使用する場合、すべて正常に機能します。

.ts

declare var a;
var b = a;

.js

var b = a;

しかし、変数を宣言してからクラスを拡張しようとすると(変数が有効なtypescriptクラス識別子であると仮定して)、typescriptが失敗し、「name」が見つからないという奇妙なエラーが発生します。

.ts

declare var a;
class b extends a {}

エラー

test.ts(2,17): error TS2304: Cannot find name 'a'.

これが発生する理由と、TypeScriptが「名前」と呼ぶものについてのヒントはありますか?最初のバージョンでは識別子が完全に検出されているように見えるので、間違いなく「識別子」ではありません。

xmojmr

..TypeScript識別子「a」が実際にクラスを参照しいることをどのように指示できますか。typescriptは、ここにあると仮定して拡張コードを生成する必要があります。サードパーティの縮小ライブラリで定義されています。内部構造を記述せずに前方宣言する方法はありますか?プロトタイプはnode.js event.EventEmitter

最新のTypeScriptコンパイラをハックしてあなたが望むことをする方法を知りません、そしてあなたの問題の説明から私は実際にあなたが望むことを理解していませんでした...

...しかし、サードパーティのライブラリでevent.EventEmitter、特に変数型を宣言する必要性に遭遇しました私は、interfaceどのコピー/貼り付けが内部構造の重要なメンバーを記述しているか宣言することによって、この必要性を回避しました

TODOその時点でより良い解決策を見つけることができなかったので、それはマークされていますが、あなたの場合にも回避策として機能する可能性があります

interfaces.d.ts

/// <reference path="../../vendor/borisyankov/DefinitelyTyped/node/node.d.ts"/>

interface IChildProcess /* TODO: should be "extends child_process.ChildProcess" */ {
  stdin: NodeJS.WritableStream;
  stdout: NodeJS.ReadableStream;
  stderr: NodeJS.ReadableStream;
  pid: number;
  on(event: string, listener: Function): NodeJS.EventEmitter;
}

some.ts

var process: IChildProcess;

process = child_process.spawn("cmd.exe", args, {
  cwd: options.cwd || process.cwd(),
  stdio: options.stdio || 'inherit',
  env: process.env,
  detached: false
});

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

このスクリプトがターミナルで機能するのにファイルからは機能しないのはなぜですか?

分類Dev

sedコマンドがインタラクティブに機能するのにスクリプトでは機能しないのはなぜですか?

分類Dev

bashスクリプト内でタイムアウトが機能しないのはなぜですか?

分類Dev

プライベートセットがMutableLiveDataに対して機能しないのはなぜですか?

分類Dev

怠惰なゲッターがプロトタイプでは機能するのにクラスでは機能しないのはなぜですか?

分類Dev

XCOPYがスクリプトで機能しないのはなぜですか?

分類Dev

スクリプトでSETLINESIZEが機能しないのはなぜですか?

分類Dev

セットの共通部分とセットの差の呼び出しに対してタイプ控除が機能しないのはなぜですか?

分類Dev

SQLスクリプトが機能しないのはなぜですか?

分類Dev

crontabスクリプトが機能しないのはなぜですか?

分類Dev

bashスクリプトが機能しないのはなぜですか?

分類Dev

スクリプトが機能しないのはなぜですか?

分類Dev

プロットのリストに対してPythonリストremove()が機能しないのはなぜですか?

分類Dev

書かれているように、このテストが私のマップ機能に対して機能しないのはなぜですか?

分類Dev

この単純なPHPログインスクリプトが機能しないのはなぜですか?

分類Dev

単純なスクリプトvimがタブ文字で機能しないのはなぜですか?

分類Dev

このonclickイベントがスクリプトで機能しないのはなぜですか?

分類Dev

スクリプトでbashエイリアスが機能しないのはなぜですか?

分類Dev

ファイルエクスプローラー検索が部分的なファイル名に対して機能しないのはなぜですか?

分類Dev

シフトを使用するこのスワップマクロが負の数に対して機能しないのはなぜですか?

分類Dev

fmapがタプルに対して機能しないのはなぜですか?

分類Dev

PythonコードがJupyterNotebookで機能するのに、スクリプトとして機能しないのはなぜですか?

分類Dev

このスクリプトがnohupで機能しないのに、それがなくても問題ないのはなぜですか?

分類Dev

プロトタイプが機能しないのはなぜですか?

分類Dev

なぜ[:] [:1]はタプルのリストに対して機能しないのですか?リスト内のすべてのタプルの一部のインデックスを反復可能にするにはどうすればよいですか?

分類Dev

ダイクストラのアルゴリズムが負の重みエッジに対して機能しないのはなぜですか?

分類Dev

PHPログインスクリプトがChromeで機能するのに、FireFoxやEdgeでは機能しないのはなぜですか?

分類Dev

/etc/cron.hourlyにスクリプトを配置しても機能しないのはなぜですか?

分類Dev

リンクされたデータに対してインデックス作成が機能しないのはなぜですか?

Related 関連記事

  1. 1

    このスクリプトがターミナルで機能するのにファイルからは機能しないのはなぜですか?

  2. 2

    sedコマンドがインタラクティブに機能するのにスクリプトでは機能しないのはなぜですか?

  3. 3

    bashスクリプト内でタイムアウトが機能しないのはなぜですか?

  4. 4

    プライベートセットがMutableLiveDataに対して機能しないのはなぜですか?

  5. 5

    怠惰なゲッターがプロトタイプでは機能するのにクラスでは機能しないのはなぜですか?

  6. 6

    XCOPYがスクリプトで機能しないのはなぜですか?

  7. 7

    スクリプトでSETLINESIZEが機能しないのはなぜですか?

  8. 8

    セットの共通部分とセットの差の呼び出しに対してタイプ控除が機能しないのはなぜですか?

  9. 9

    SQLスクリプトが機能しないのはなぜですか?

  10. 10

    crontabスクリプトが機能しないのはなぜですか?

  11. 11

    bashスクリプトが機能しないのはなぜですか?

  12. 12

    スクリプトが機能しないのはなぜですか?

  13. 13

    プロットのリストに対してPythonリストremove()が機能しないのはなぜですか?

  14. 14

    書かれているように、このテストが私のマップ機能に対して機能しないのはなぜですか?

  15. 15

    この単純なPHPログインスクリプトが機能しないのはなぜですか?

  16. 16

    単純なスクリプトvimがタブ文字で機能しないのはなぜですか?

  17. 17

    このonclickイベントがスクリプトで機能しないのはなぜですか?

  18. 18

    スクリプトでbashエイリアスが機能しないのはなぜですか?

  19. 19

    ファイルエクスプローラー検索が部分的なファイル名に対して機能しないのはなぜですか?

  20. 20

    シフトを使用するこのスワップマクロが負の数に対して機能しないのはなぜですか?

  21. 21

    fmapがタプルに対して機能しないのはなぜですか?

  22. 22

    PythonコードがJupyterNotebookで機能するのに、スクリプトとして機能しないのはなぜですか?

  23. 23

    このスクリプトがnohupで機能しないのに、それがなくても問題ないのはなぜですか?

  24. 24

    プロトタイプが機能しないのはなぜですか?

  25. 25

    なぜ[:] [:1]はタプルのリストに対して機能しないのですか?リスト内のすべてのタプルの一部のインデックスを反復可能にするにはどうすればよいですか?

  26. 26

    ダイクストラのアルゴリズムが負の重みエッジに対して機能しないのはなぜですか?

  27. 27

    PHPログインスクリプトがChromeで機能するのに、FireFoxやEdgeでは機能しないのはなぜですか?

  28. 28

    /etc/cron.hourlyにスクリプトを配置しても機能しないのはなぜですか?

  29. 29

    リンクされたデータに対してインデックス作成が機能しないのはなぜですか?

ホットタグ

アーカイブ