2017-03-20 8 views
1

JavaScriptで動作するプラグインがあります。私はAngularJS2の私のTypeScriptコンポーネントの中で関数を使いたいと思っています。私は成功のないさまざまな方法を使いました。TypeScriptとAngularJSでのJavaScript関数のインポート2

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

で次のように私はcube.d.tsを作成し、タイプ定義のアプローチを使用して

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

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

のは、私は次の関数のcube.jsを使用したいと仮定しましょう私のコンポーネントは、私は次のように関数をインポートしました:

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

しかし、それは私に次のエラーを与える:

Error in :0:0 caused by: Cannot read property 'cube' of undefined TypeError: Cannot read property 'cube' of undefined at HComponent.webpackJsonp

tsconfig.jsonでは、allowJSは(編集済み: "allowJs":真)真です。 @typeモジュールは既にインストールされています。まだ単純なJS関数を読むことができません。

+0

は 'コンストラクタを、それをインスタンス化してみ(private myCube:Cube){} 'コンストラクタ内 – SrAxi

+0

コンストラクタでの生成がうまくいかない – Eni

答えて

1

に私は答えを見つけました。

マイcube.jsファイル:

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

マイcube.d.tsは、TSコンポーネントで

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

ファイル、私が持っている:

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

これは私のために

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

を動作し、私のコンポーネント

model.functionName(); 
+0

エラー - >名前が見つかりません '要求する ')。書いた後であっても、var require:any;を宣言してください。私は上記のエラーがあります。 – Eni

関連する問題