从服务变量为组件变量分配接口

时间:2016-10-22 17:35:11

标签: angular typescript typescript-typings

目前我有一个定义了接口的服务变量。

interface Bike {
    color: string;
    stock: number;
    wheels: number;
}

在我的班级中,我定义了变量的类型:

export class BikeService {
    bikes: Array<Bike>;
    bike: Bike;
    ...

现在我想从我的服务中取一辆自行车:

// Give it a return type of Bike so we have access to the interface
public getSpecificBike(i: number): Bike {
    this.bike = this.bikes[i];
    return this.bike;
}

当我在我的组件中使用此功能时:

export class DisplaySpecificBikeComponent {
    _bikeService: BikeService;

    bike: any; // This is where the problem starts

    constructor(_bikeService: BikeService) {
        this._bikeService = _bikeService;
        this.bike = this._bikeService.getSpecificBike(1);
        ...
    }
    ...
}

此时我唯一可以访问自行车界面的时间是服务功能,这是有道理的,因为我们已经明确表示getSpecificBike()函数的返回类型是Bike类型。 / p>

我很好奇是否有一种方法不需要我重新定义Component中的接口,以便我的Component变量可以访问接口而不仅仅是服务中的函数。

如果没有办法实现这一点:为什么变量&#34; bike&#34;在组件中继承函数值的接口?

而不是设置

bike: any;

有没有办法设置为

bike: Bike;

没有在两个地方(服务和组件)重新定义界面?

谢谢!

0 个答案:

没有答案