类实例在TypeScript中返回空白对象

时间:2019-07-14 10:01:34

标签: typescript

我不知道为什么。我创建了2个实现相同接口的类,并为interface属性设置了不同的值。当我运行代码时,其中一个类返回空白对象,另一个类按预期工作。

LinkBinding.ts

export enum LinkTypes {
    Custom = 'Custom',
    Page = 'Page'
}

export interface LinkBinding {
    type: LinkTypes
}

LinkPage.ts

import {LinkBinding, LinkTypes} from "./LinkBinding";

export class LinkPage implements LinkBinding {
    type: LinkTypes = LinkTypes.Page;
    isAbsolute: boolean = false;
}

LinkCustom.ts

import {LinkBinding, LinkTypes} from "./LinkBinding";

export class LinkCustom implements LinkBinding {
    type: LinkTypes = LinkTypes.Custom;
}

LinkCustom.ts到JS

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LinkBinding_1 = require("./LinkBinding");
var LinkCustom = /** @class */ (function () {
    function LinkCustom() {
        this.type = LinkBinding_1.LinkTypes.Custom;
    }
    return LinkCustom;
}());
exports.LinkCustom = LinkCustom;

LinkPage.ts到JS

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LinkPage = /** @class */ (function () {
    function LinkPage() {
    }
    return LinkPage;
}());
exports.LinkPage = LinkPage;

您可以看到LinkCustom.js具有type属性,但LinkPage.js没有。

出什么问题了?

1 个答案:

答案 0 :(得分:0)

在上面的注释中查看了游乐场的代码后,即可工作。我看了看我项目的目录。对于每个打字稿文件,都有一个我很长时间以前编译过的JavaScript文件,并且没有删除它们。 Typescript或Webpack加载了这些JavaScript文件而不是Typescript文件。删除JavaScript文件后,Typescript重新编译了.ts文件。 LinkPage.ts和其他文件在另一个Typescript项目中用作库。我不需要在此添加其他项目的tsconfig.json的路径。

这是我的目录结构:

  • src
    • VueJs项目(打字稿)
    • 我的图书馆项目(打字稿)

My library project中引用的VueJs project。因此,我没有将My library project包含在My library project/tsconfig.json中。删除My library project中的js文件即可正常工作。