Javascript angular2在使用另一个typescript文件中的其他类时报告错误
我导入了另一个文件中的类,angular2无法通过编译。但是如果我将类复制到同一个文件中,它可以通过编译 错误信息如下: /用户/SranLiu/Documents/code/angular/training tracker/src/app/exercise-detail.component.ts (8,2):类型{id:number;名称:string;exerciseSets:{id:number; num:number;先前的权重:number;weig…'不可分配给 类型“Exercise”。对象文字只能指定已知属性, 类型“Exercise”中不存在“exerciseset” 代码如下: 第一个文件:Javascript angular2在使用另一个typescript文件中的其他类时报告错误,javascript,angular,typescript,Javascript,Angular,Typescript,我导入了另一个文件中的类,angular2无法通过编译。但是如果我将类复制到同一个文件中,它可以通过编译 错误信息如下: /用户/SranLiu/Documents/code/angular/training tracker/src/app/exercise-detail.component.ts (8,2):类型{id:number;名称:string;exerciseSets:{id:number; num:number;先前的权重:number;weig…'不可分配给 类型“Exercis
//exercise-detail.component.ts
import { Component } from '@angular/core';
import { Exercise } from './exercise';
let exercise: Exercise = {
id: 1,
name: 'bench press',
exerciseSets: [{
id: 1,
num: 1,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: true
},{
id: 2,
num: 2,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: false
}]
};
@Component({
selector: 'exercise-detail',
template: `
<table border='1'>
<tr>
<td>finish?</td>
<td>{{exercise.exerciseSets[1].isFinish}}</td>
</tr>
</table>
`
})
export class ExerciseDetailComponent {
exercise = exercise;
}
如果我将类从第二个文件复制到第一个文件,如下所示,它可以通过编译并成功运行
//exercise-detail.component.ts
import { Component } from '@angular/core';
export class ExerciseSet {
id: number;
num: number;
previousWeight: number;
weight: number;
reps: number;
isFinish: boolean;
}
export class Exercise {
id: number;
name: string;
exerciseSets: ExerciseSet[];
}
let exercise: Exercise = {
id: 1,
name: 'bench press',
exerciseSets: [{
id: 1,
num: 1,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: true
},{
id: 2,
num: 2,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: false
}]
};
@Component({
selector: 'exercise-detail',
template: `
<table border='1'>
<tr>
<td>finish?</td>
<td>{{exercise.exerciseSets[1].isFinish}}</td>
</tr>
</table>
`
})
export class ExerciseDetailComponent {
exercise = exercise;
}
//exercise-detail.component.ts
从'@angular/core'导入{Component};
导出类练习集{
id:编号;
num:数字;
以前的重量:数字;
重量:个数;
代表:人数;
isFinish:布尔;
}
出口课练习{
id:编号;
名称:字符串;
练习集:练习集[];
}
让练习:练习={
id:1,
名称:“台式压力机”,
练习集:[{
id:1,
数目:1,,
以前的权重:0,
体重:10,
代表:12,
是的
},{
id:2,
数字:2,
以前的权重:0,
体重:10,
代表:12,
isFinish:false
}]
};
@组成部分({
选择器:“练习细节”,
模板:`
结束?
{exercise.exerciseSets[1].isFinish}
`
})
导出类ExerciseDetailComponent{
运动=运动;
}
我认为这个问题不是因为语法和逻辑。也许我错过了typescript或angular中的一些规则,比如如果我将在另一个文件中使用该类,我需要声明或其他东西。我只使用typescript几天,所以有人知道吗?如果使用“npm start”要使您的项目自动编译,您可能会遇到与我类似的问题。因为npm似乎只支持编译现有文件,如果您在npm工作期间创建新文件,npm将无法扫描新文件
所以我用“ng开始”手动重新组合项目,然后我的项目可以再次工作。您的代码对我来说运行良好。但是,请注意,
Exercise
和ExerciseSet
不应声明为类,而应声明为接口。这只是一个建议,因为它可能会导致细微的错误。您的代码完全有效,只是不是最佳的。真的谢谢谢谢你的回答。我发现我犯了一个非常愚蠢的错误。现在我解决了。这是什么?请发帖,或者更新你的问题,因为它现在让人困惑。谢谢你提醒我。我在下面发帖回答。我想我犯了一个非常愚蠢的错误。lolnpm start
只是package.json文件中定义的命令的别名。您可以自定义它以运行您想要的任何内容。
//exercise-detail.component.ts
import { Component } from '@angular/core';
export class ExerciseSet {
id: number;
num: number;
previousWeight: number;
weight: number;
reps: number;
isFinish: boolean;
}
export class Exercise {
id: number;
name: string;
exerciseSets: ExerciseSet[];
}
let exercise: Exercise = {
id: 1,
name: 'bench press',
exerciseSets: [{
id: 1,
num: 1,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: true
},{
id: 2,
num: 2,
previousWeight: 0,
weight: 10,
reps: 12,
isFinish: false
}]
};
@Component({
selector: 'exercise-detail',
template: `
<table border='1'>
<tr>
<td>finish?</td>
<td>{{exercise.exerciseSets[1].isFinish}}</td>
</tr>
</table>
`
})
export class ExerciseDetailComponent {
exercise = exercise;
}