我不知道为什么。我创建了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
没有。
出什么问题了?
答案 0 :(得分:0)
在上面的注释中查看了游乐场的代码后,即可工作。我看了看我项目的目录。对于每个打字稿文件,都有一个我很长时间以前编译过的JavaScript文件,并且没有删除它们。 Typescript或Webpack加载了这些JavaScript文件而不是Typescript文件。删除JavaScript文件后,Typescript重新编译了.ts
文件。 LinkPage.ts
和其他文件在另一个Typescript项目中用作库。我不需要在此添加其他项目的tsconfig.json
的路径。
这是我的目录结构:
My library project
中引用的VueJs project
。因此,我没有将My library project
包含在My library project/tsconfig.json
中。删除My library project
中的js文件即可正常工作。