質問

私はTypescriptを試みています、そしてそれが非常に便利なことを見つけます。

私はかなり大きなプロジェクトを述べていて、私はTypeScriptを使って書き換えることを検討していました。ここでの主な問題は次のとおりです。

ファイルA.TS:

class A extends B {
    // A stuff
}
.

ファイルB.TS:

class B {
    // B stuff
}
.

このコマンドでA.TSをコンパイルした場合:

tsc --out compiledA.js A.ts
.

コンパイラからエラーを出す原因は、伸びの後の「B」の脅威方法がわからない。

だから、「解」はA.TS(コードの最初の行として)に含まれるものです。

/// <reference path="./B.ts" />
.

同じコマンドを持つA.TSを再びコンパイルする

tsc --out compiledA.js A.ts
.

は、B.TSとA.TSコードの両方を含むCompileda.jsになります。 (これはとても素敵な可能性があります)

私の場合は、compileda.jsファイルにA.TSコードをコンパイルするだけで、B.TSのものがそこにいることを望まない。

確かに、私が欲しいものは:

  • tsc - a.js a.ts=> a.tsのみのコンパイル
  • tsc - out b.js b.ts=> B.TSのみをコンパイルする

「extends」キーワードを削除することによってそれを実行することができますが、それをやっています。

これを行う方法がある場合、誰かが私に言うことができますか?

役に立ちましたか?

解決

研究の後、私はコンパイラのout引数によって問題が導入されました。

@ silent__しているソリューションは、モジュールに対処したい場合は問題ありません。必要でない場合は、必須ステートメントを使用する必要があります(質問を見てから、main.tsの "ファイルがなくなり、引数

をコンパイルする必要があります。

他のヒント

edit: Andrea Points Out Out Outs Outを指している場合は、動作が期待されている動作を取得する、すなわちソースファイルの組み合わせはありません。私は下の代替の解決策を残す私はそれが他の誰かを助けることができる。


これを行うために外部モジュール構文(CommonjsまたはAMD)を使用する必要があると思います。

あなたの例を使って:

A.TS

import B = module("b")

class A extends B.B {
    // A stuff
}
.

b。

export class B {
    // B stuff
}
.

--outを使用してコンパイルします。

これにより、CommonJSシステムを使用してtsc --out compiledA.js A.tsをインポートします。結果のファイルは次のようになります。

A.TS

var __extends = this.__extends || function (d, b) {
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
}
var B = require("./b")
var A = (function (_super) {
    __extends(A, _super);
    function A() {
        _super.apply(this, arguments);

    }
    return A;
})(B.B);
.

b。

var B = (function () {
    function B() { }
    return B;
})();
exports.B = B;
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top