angular - Importarea unei funcții JavaScript în TypeScript și AngularJS 2


Am un plugin care funcționează cu JavaScript. Vreau să folosesc funcția în interiorul componentului meu TypeScript în AngularJS2. Am încercat diferite metode fără succes.

@angular/cli: 1.0.0-rc.0, node: 7.7.2, @angular/core: 2.4.9

Să presupunem că vreau să folosesc următoarea funcție cube.js:

function cube(x) {
   return x * x * x;
}
const foo = Math.PI + Math.SQRT2;
export default { cube, foo };

Folosind abordarea cu definiție de tip, creez cube.d.ts astfel:

interface Cube {
   cube(x:number):number;
} 
export default Cube;

În componenta mea, am importat funcția astfel:

import Cube from './cube';
...
public myCube:Cube;
console.log(myCube.cube(3));

Dar îmi dă următoarea eroare:

Eroare în :0:0 cauzată de: Nu se poate citi proprietatea 'cube' a valorii nedefinite TypeError: Nu se poate citi proprietatea 'cube' a valorii nedefinite la HComponent.webpackJsonp

în tsconfig.json, allowJS este adevărat (editat: "allowJs": true). @type module a fost deja instalat. Tot nu se poate citi o funcție JS simplă.

Vreo idee?

Răspuns #1

Am găsit răspunsul.

Fișierul meu cube.js:

"use strict"; 
class Cube {
    cube(x) {
     return x * x * x;
   }
}
export default Cube;

Fișierul meu cube.d.ts

export default class Cube {
  cube(x: number): number;
}

În componenta ts, am:

/// <reference path="./cube.d.ts" />
import Cube from './cube';
...
        const my = new Cube();
        console.log(my.cube(10));

Răspunsul #2

Aceasta funcționează pentru mine

import model = require('../../model');

Și în componenta mea

model.functionName();