gpt4 book ai didi

json - 如何强制 TypeScript 转译原型(prototype)方法?

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:56 25 4
gpt4 key购买 nike

我试图在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com