我试图在 TypeScript 中的类上定义方法,然后填充该类,但是当我尝试调用这些方法时,它说它们不存在。
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);
}
}
我可能需要原型(prototype)语法来与尚不能使用 ES2015 的部分实现跨系统兼容性。
最佳答案
您将目标
设置为ES2015(或更高版本)。这就是 Javascript 包含类的原因。 ES2015 支持类,因此无需使用 prototype
。您可以以 es5
为目标,并使用旧的方式在 Javascript 中执行类。您可以在 tsconfig.json 或 Visual Studio 中或在 tsc 命令行中进行设置(具体取决于您的 typescript 设置方式)。对于tsconfig.json
:
{
"compilerOptions": {
"target": "es6"
}
}
但是您的错误似乎与此无关,可能在运行时 columnHeader
不是预期的类型。
关于json - 如何强制 TypeScript 转译原型(prototype)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053742/