在我的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
属性,它是出现错误的行。
有什么想法吗?