1

I am trying to write Typescript in IntelliJ and do not know how to tell IntelliJ to 'import' some third party Javascript files. IntelliJ (or is it Node.JS?) gives the following complaint:

C:/Temp/Typescript Example Project/ts/FinancialService.ts(2,17): error TS2095: Could not find symbol 'com'.
C:/Temp/Typescript Example Project/ts/FinancialService.ts(4,31): error TS2095: Could not find symbol 'com'.

Thirdparty.Calculator.jsを「インポート」したい:

var com = com || {};
com.thirdparty = com.thirdparty || {};
com.thirdparty.Calculator = function() {
    this.add = function(a, b) {
        return a + b;
    };
    this.square = function(n) {
        return n*n;
    };
};

FinancialService.tsは次のようになります。

class FinancialService {
    calculator: com.thirdparty.Calculator;
    constructor() {
        this.calculator = new com.thirdparty.Calculator();
    }
    calculateStuff(a: number) {
            return this.calculator.square(a);
    }
}

IntelliJ は、次のように Typescript をトランスパイルしているように見え、正しい値がコンソールに記録されます。

<html>
    <head>
        <script src="js/Thirdparty.Calculator.js"></script>
        <script src="ts/FinancialService.js"></script>

        <script>
            var cal = new com.thirdparty.Calculator();
            console.log("Calculator.square() is " + cal.square(9));

            var fs = new FinancialService();
            console.log("FinancialService.calculateStuff() is " + fs.calculateStuff(4));
        </script>
    </head>
    <body>
    </body>
</html>

IntelliJ が認識できるようにプロジェクトを構成するにはどうすればよいThirdparty.Calculator.jsですか?

4

1 に答える 1

2

TypeScript コンパイルの目的でプロジェクトに追加できThirdparty.Calculator.d.tsます。

declare module com.thirdparty {
    export class Calculator {
        add(a: number, b: number) : number;
        square(n: number) : number;
    }
}

これは明らかに、サードパーティのライブラリとともに成長する必要があります。

ほんの少しの手間で、それを TypeScript に変換することができます...

module com.thirdparty {
    export class Calculator {
        add = function(a: number, b: number) {
            return a + b;
        };
        square(n: number) : number {
            return n*n;
        }
    }
}
于 2013-11-11T16:41:43.470 に答える