【发布时间】:2018-08-09 18:14:52
【问题描述】:
我正在尝试在 TypeScript 中定义一个类的方法,然后填充该类,但是当我尝试调用这些方法时,它说它们不存在。
打字稿:
export class ColumnHeader extends JSONObject {
// ...
isCountrySubtype(): boolean {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == ColumnSubtype.Country.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new CountryType()).class);
}
isRegionSubtype(): boolean {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == ColumnSubtype.Region.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new RegionType()).class);
}
isDmaSubtype(): boolean {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == ColumnSubtype.Dma.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new DmaType()).class);
}
isCitySubtype(): boolean {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == ColumnSubtype.City.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new CityType()).class);
}
isPostalCodeSubtpe(): boolean {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == ColumnSubtype.PostalCode.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new PostalCodeType()).class);
}
// ...
}
转译的 JavaScript:
class ColumnHeader extends JSONObject {
constructor() {
}
isCountrySubtype() {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == enums_1.ColumnSubtype.Country.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new CountryType()).class);
}
isRegionSubtype() {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == enums_1.ColumnSubtype.Region.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new RegionType()).class);
}
isDmaSubtype() {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == enums_1.ColumnSubtype.Dma.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new DmaType()).class);
}
isCitySubtype() {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == enums_1.ColumnSubtype.City.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new CityType()).class);
}
isPostalCodeSubtpe() {
return (this.columnSubtype && this.columnSubtype.toLowerCase() == enums_1.ColumnSubtype.PostalCode.toLowerCase()) ? true : (this.type != null && this.type.class != null && this.type.class == (new PostalCodeType()).class);
}
}
我可能需要原型语法,以便与尚不能使用 ES2015 的部分实现跨系统兼容性。
【问题讨论】:
-
你设置
--targetcompiler option了吗?你要输出 ES5 吗? -
嗨@jcalz,对不起,我在 Scrum 会议开始之前过早地发布了我的问题。我添加了实际用于填充对象的代码,因为这可能是有问题的代码。
-
isRegionType应该来自哪里?因为它不在您在问题中定义的ColumnHeader中 -
安装
extend,在ColumnHeader中定义isRegionType都可以使用您提供的代码按预期工作 -
对不起@TitianCernicova-Dragomir,我试图发布一个极简主义的例子,因为我不想用本质上相同的样板方法向我的问题发送垃圾邮件 5 次,并且我复制了错误的代码。让我试试别的。
标签: json node.js typescript