打字稿没有编译来识别导入的函数?

时间:2016-06-01 10:35:18

标签: javascript typescript ecmascript-6

我在Typescript中编写了一些代码,但是我遇到了一个问题,导入的函数没有被识别为函数。路径很好,VSCode会通过链接到实用程序文件来显示定义。

这里显示的错误是我的设置:

import {addElement} from "../../Utilities/scanBLE";
test() {
    addElements("first")
        .then(
        function (val) {
            console.log("second*");
            return addElements("second");
        })
        .then(
        function (val) {
            console.log("third*");
            return addElement("third");
        });
}

function addElements(elementText: string) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 5000);
    })
        .then(function (val) {
            console.log(elementText)
        });
}

../../公用事业/ scanBLE.ts:

export function addElement(elementText: string) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 5000);
    })
        .then(function (val) {
            console.log(elementText)
        });
}

这是日志:

  

首先(./Personal-App/app/Components/Home/home.component.js:95:17)

     

秒*(./Personal-App/app/Components/Home/home.component.js:63:21)

     

秒(./Personal-App/app/Components/Home/home.component.js:95:17)

     

第三*(./Personal-App/app/Components/Home/home.component.js:67:21)

     

EXCEPTION:错误:未捕获(承诺):

     

TypeError:scanBLE_1.addElement不是函数(./Personal-App/node_modules/@angular/core/src/facade/lang.js:370:13)   STACKTRACE :( ./Personal-App/node_modules/@angular/core/src/facade/lang.js:370:13)   错误:未捕获(在承诺中):TypeError:scanBLE_1.addElement不是函数

编译的JS看起来像这样:

var scanBLE_1 = require("Utilities/scanBLE");
test() {
    addElements("first")
        .then(function (val) {
        console.log("second*");
        return addElements("second");
    })
        .then(function (val) {
        console.log("third*");
        return scanBLE_1.addElement("third");
    });
};

实用程序/ scanBLE.ts:

function addElement(elementText) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 5000);
    })
        .then(function (val) {
        console.log(elementText);
    });
}
exports.addElement = addElement;
//# sourceMappingURL=scanBLE.js.map

出了什么问题?为什么同一个文件中的函数有效,而不是导入的精确副本?

1 个答案:

答案 0 :(得分:0)

你能试试吗

module.exports = addElement;

用于导出{}

从“../../ Utilities / scanBLE”;

导入addElement

此致 查理