令人困惑"在严格模式下具有相同名称的多个属性"错误消息

时间:2016-11-30 12:15:31

标签: javascript angular typescript ecmascript-6

背景

在我的Angular2项目中,我有一个名为random.metadata.ts的文件,其中包含以下代码:

import {
    Component,
    ChangeDetectionStrategy,
    AnimationEntryMetadata,
    ViewEncapsulation,
    Type
} from '@angular/core';

export interface RandomInterface {
    configurationUrl?: string;
    changeDetection?: ChangeDetectionStrategy;
    viewProviders?: any[];
    moduleId?: string;
    templateUrl?: string;
    template?: string;
    styleUrls?: string[];
    styles?: string[];
    animations?: AnimationEntryMetadata[];
    interpolation?: [string, string];
    entryComponents?: Array<Type<any> | any[]>;
    properties?: string[];
    inputs?: string[];
    events?: string[];
    outputs?: string[];
    host?: {
        [key: string]: string;
    };
    exportAs?: string;
    queries?: {
        [key: string]: any;
    };
}

export class RandomMetadata extends Component implements RandomInterface {
    constructor({configurationUrl, inputs, outputs, host, exportAs, moduleId,
        viewProviders, changeDetection = ChangeDetectionStrategy.Default,
        queries, templateUrl, template, styleUrls, styles, animations,
        interpolation, entryComponents}: RandomInterface = {}) {

        super({
            template: template,
            inputs: inputs,
            outputs: outputs,
            templateUrl: templateUrl,
            host: host,
            exportAs: exportAs,
            moduleId: moduleId,
            providers: providers,
            viewProviders: viewProviders,
            changeDetection: changeDetection,
            queries: queries,
            styleUrls: styleUrls,
            styles: styles,
            animations: animations,
            encapsulation: ViewEncapsulation.Native,
            interpolation: interpolation,
            entryComponents: entryComponents
        });
    }
}

此外,我的tsconfig.json编写如下

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "moduleResolution": "node",
        "sourceMap": true,
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true,
        "removeComments": false,
        "noImplicitAny": false,
        "declaration": true,
        "baseUrl": "src/"
    },
    "exclude": [
        "node_modules"
    ],
     "include": [
        "node_modules/**/*.d.ts",
        "typings-custom/**/*.d.ts"
    ]
}

问题

当我尝试编译整个项目时,我得到的是这两个错误。

  

[默认]中的错误random.metadata.ts:44:12
  对象文字在严格模式下不能具有多个具有相同名称的属性。

     

[默认]中的错误random.metadata.ts:44:12
  重复的标识符&#39;模板&#39;。

如您所见,我的ECMAScript目标版本定义为es6,因此它不应该产生这种特定的语法错误。

  

在ECMAScript 5严格模式代码中,重复的属性名称被视为SyntaxError。通过引入计算属性名称可以在运行时进行复制,ECMAScript 2015已经删除了此限制。 MDN

除此之外,对象文字没有重复的template属性。它有一个templateUrl属性,它是出现错误的行。

有什么想法吗?

0 个答案:

没有答案