Машинописи - разделение выходного кода

голоса
1

я пытаюсь машинопись, и я нахожу это очень полезно.

Я довольно большой проект, и я рассматривал его с помощью переписывания машинописи. Основная проблема здесь заключается в следующем:

файл A.ts:

class A extends B {
    // A stuff
}

файл B.ts:

class B {
    // B stuff
}

Если я составляю A.ts с помощью следующей команды:

tsc --out compiledA.js A.ts

Я получаю ошибку компилятора, потому что он не знает, как угроза «Б» после того, как проходит.

Таким образом, «решение» было бы в том числе и в A.ts (как первой строке кода):

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

Компиляция снова A.ts с той же командой

tsc --out compiledA.js A.ts

Будет ли в результате compiledA.js, содержащих как B.ts и A.ts код. (Который может быть очень приятно)

В моем случае, мне нужно только для компиляции кода A.ts в файле compiledA.js, и я не хочу, чтобы B.ts материала, чтобы быть там.

В самом деле, что я хочу:

  • TSC --out A.js A.ts => компилировать только материал A.ts
  • TSC --out B.js B.ts => компилировать только материал B.ts

Я могу сделать это путем удаления «проходит» ключевое слово, но делать это я буду терять большую часть машинописного добра.

Может кто-то telll меня, если есть способ сделать это?

Задан 03/10/2012 в 12:54
источник пользователем
На других языках...                            


2 ответов

голоса
2

После некоторых исследований я обнаружил, что проблема была введена --out аргументом в компиляторе.

@silent__thought решение работает просто отлично, если вы хотите иметь дело с модулями. Если вы не вы должны будете использовать требовать заявление (смотреть на этот вопрос), а затем скомпилировать файл «main.ts» withouth в --out аргумента

Ответил 03/10/2012 в 20:27
источник пользователем

голоса
0

EDIT: Как Андреа указывает, если опустить --outпараметр вы получите ожидаемое поведение, т.е. нет комбинации исходных файлов. Я оставлю это альтернативное решение ниже упаковывают может помочь кому - то еще.


Я считаю, что вам придется использовать внешний синтаксис модуля (CommonJS или AMD), чтобы сделать это.

Используя ваш пример:

a.ts

import B = module("b")

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

b.ts

export class B {
    // B stuff
}

Компиляция с tsc --out compiledA.js A.ts.

Это приводит к a.jsимпорту с b.jsпомощью системы CommonJS. Полученные файлы выглядеть следующим образом :

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.ts

var B = (function () {
    function B() { }
    return B;
})();
exports.B = B;
Ответил 03/10/2012 в 14:59
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more