javascript - Mesaj de eroare confuz „proprietăți multiple cu același nume în modul strict”


Fundal

În interiorul proiectului meu Angular2, am un fișier numit random.metadata.ts, care conține acest cod:

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
        });
    }
}

De asemenea, tsconfig.json este scris astfel

{
    "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"
    ]
}

Problemă

Când încerc să compilez întregul proiect, ceea ce obțin sunt aceste două erori.

EROARE în [implicit] random.metadata.ts:44:12
Un literal de obiect nu poate avea mai multe proprietăți cu același nume în modul strict.

EROARE în [implicit] random.metadata.ts:44:12
Identificator duplicat 'template'.

După cum puteți vedea, versiunea mea țintă ECMAScript este definită ca es6, prin urmare nu ar trebui să producă această eroare de sintaxă specifică.

În codul din modul strict ECMAScript 5, numele proprietăților duplicate erau considerate o eroare de sintaxă. Odată cu introducerea numelor de proprietăți calculate, care fac duplicarea posibilă la rulare, ECMAScript 2015 a eliminat această restricție. MDN

În afară de asta, obiectul literal nu are o proprietate template duplicată. Are totuși o proprietate templateUrl, care este linia unde apare eroarea.

Vreo gând?