我想在角度2中创建一个组件,它将采用一些输入参数。我对于应该使用类或接口输入以及为什么有点困惑?对于以下组件我使用了接口
import { Component, Input, Output, EventEmitter } from "@angular/core";
@Component({
moduleId: module.id,
selector: 'combo-compo',
template: `
<select name="theme" class="form-control" [ngModel]="selectedObject" (ngModelChange)="onChangeObj($event)">
<option [ngValue]="theme" *ngFor="let theme of dataObject" >{{theme.value}}</option>
</select>
`
})
export class ComboComponent {
selectedObject: ComboInterface;
@Input() dataObject: Array<ComboInterface>;
@Output() onComboChange = new EventEmitter();
onChangeObj(newObj: ComboInterface) {
this.selectedObject = newObj;
this.onComboChange.emit(this.selectedObject);
}
}
interface ComboInterface {
key: string;
value: string;
}
答案 0 :(得分:2)
在Typescript中,您可以自由使用CLASS
或INTERFACE
。
以下是可以帮助您在选择正确结构时做出正确决定的原因:
界面:您只能使用相应的类型声明属性。这意味着您不能在其中包含函数,也不能在声明时初始化这些属性。
类:您可以声明属性以及默认值以及函数。
PS:当你只想要数据的结构时,接口比类更受欢迎
答案 1 :(得分:1)
接口比类更可取,因为它们更灵活,任何类都可以实现该接口并用于输入。此外,如果您是单元测试,则可以创建实现该接口的模拟或存根类,以便您可以单独测试组件。
虽然,实际上,如果你只有一个实现这个接口的类,并且它没有在其他地方使用,那么可能没有必要去创建一个接口的额外步骤,而你应该只是我们一个班级。