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

标签 json node.js typescript

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

相关文章:

json - Wannachart 不返回 png 图形

javascript - 从值中获取 JSON 键或反转 JSON 数据

php - json_encode 和波斯语单词?

Python 请求向 JSON 文件添加 token

javascript - Nodejs crypto.getHashes() 返回一个空数组

angular - 页面初始加载时显示两个菜单

javascript - console.log ('You said ${reply}' 的输出问题;

mysql - 快速更新大量数据

database - 如何通过组合查询 findAll 获取数据对象?

angular - 类型错误 : Object prototype may only be an Object or null: undefined Angular 8