我试图在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的部件实现跨系统兼容。
答案 0 :(得分:3)
您将prototype
设置为ES2015(或更高版本)。这就是Javascript包含类的原因。 ES2015支持类,因此无需使用es5
。您可以定位tsconfig.json
并使用旧方法在Javascript中执行类。您可以在tsc
或Visual Studio或tsconfig.json
命令行中设置此项(具体取决于您的打字稿设置方式)。对于{
"compilerOptions": {
"target": "es6"
}
}
:
columnHeader
但是您的错误似乎与此无关,可能在运行时{{1}}不是预期的类型。