angular - JavaScript ფუნქციის იმპორტი TypeScript-ში და AngularJS 2-ში


მე მაქვს პლაგინი, რომელიც მუშაობს JavaScript-თან ერთად. მე მინდა გამოვიყენო ფუნქცია ჩემს TypeScript კომპონენტში AngularJS2-ში. მე შევიყენე სხვადასხვა გზები, მაგრამ უშედეგოდ.

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

მიუთითეთ, რომ მინდა გამოვიყენო შემდეგი ფუნქცია cube.js:

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

ტიპის დეკლარაციის მიდგომის გამოყენებით, მე ვქმნი cube.d.ts შემდეგნაირად:

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

ჩემ კომპონენტში, მე ფუნქცია შემდეგნაირად ავამოტივირე:

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

მაგრამ ეს მაძლევს შემდეგ შეცდომას:

შეცდომა :0:0-ში გამოწვეული მიზეზით: შეუძლებელია წაიკითხოთ თვისება 'cube' განსაზღვრული არ არის ტიპის შეცდომა: შეუძლებელია წაიკითხოთ თვისება 'cube' განსაზღვრული არ არის HComponent.webpackJsonp-ში

tsconfig.json-ში, allowJS არის true (დაპრანჭული: "allowJs": true). @type module უკვე დაინსტალირებულია. ჯერაც ვერ წავუკითხე მარტივი JS ფუნქცია.

რა იდეა?

პასუხი #1

მე ვიპოვე პასუხი.

ჩემი cube.js ფაილი:

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

ჩემი cube.d.ts ფაილი

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

TS კომპონენტში მე მაქვს:

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

პასუხი #2

ეს ჩემთვის ვარგისია

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

და ჩემს კომპონენტში

model.functionName();