2017-04-04 22 views
1

我將不勝感激您的2美分來解決調用另一個文件中定義的函數的問題。我閱讀了Typescript的文檔,該文檔建議設置一個接口或一個模塊,然後引用它,但是我收到的錯誤如下。無法從另一個.ts文件訪問.ts文件中定義的函數定義

錯誤

ReferenceError: viewReport is not defined 

文件結構

sample 
    - sample.component.ts 
    - sample.component.html 
    - sample.component.css 
    pdf 
    viewReport.ts 

sample.component.ts

import './pdf/viewReport'; 

declare var pdfMake: any; 
declare var viewReport: any; 

export class SampleComponent { 

    addr = { 
     "streetaddress": '', 
     "cityName": '', 
     "stateCode": '', 
     "zipCode": '' 
    }; 

    constructor() {} 

    data = { 
     header: { 
      "address": { 
       "street": this.addr.streetAddress, 
       "city": this.addr.cityName, 
       "state": this.addr.stateCode, 
       "zip": this.addr.zipCode 
      } 
     } 

    } 

    downloadPdf(){ 
     let pdf = pdfMake; 
     pdf.createPdf(viewReport(this.data)).download('test.pdf'); 
    } 
} 

個viewReport.ts

function viewReport(data) { 
    let docDefinition = { 
     content: [{ 
     text: 'Address: ' + data.header.address.street 
     }] 
    } 
    console.log('data:: ', data); 
    return docDefinition; 
} 
+0

缺少''出口:'導出功能viewReport ...' – n00dl3

+0

如果我將該函數導出爲你在上面提到,我得到「不能調用其類型缺少呼叫簽名的表達式」。 – absingharora

+0

'data'' should typed ...'function viewReport(data:Something)' – n00dl3

回答

0

我能通過進行了如下修改代碼來解決問題:

viewReport.ts

添加關鍵字 '默認' 導出時

export default function viewReport(data) { 

個sample.component.ts

更換

import './pdf/viewReport'; 
declare var viewReport: any; 

import viewReport from './pdf/viewReport'; 

參考

@n00dl3 
@vesse 
https://www.typescriptlang.org/docs/handbook/modules.html 
相關問題