Typescript接口无法正常工作

时间:2016-02-24 12:58:45

标签: typescript aurelia

以下代码失败并显示错误:

  

readCandidates不是函数:

这是代码

export class Candidates {    
    private _dataService : ModelContracts.IDataService;    

    constructor(private tag: ModelContracts.ITag, private dataService: ModelContracts.IDataService) {
        this._value = tag;
        this._dataService = dataService;        
    }

    private _value : ModelContracts.ITag;
    public get value() : ModelContracts.ITag {
        return this._value;
    }
    public set value(v : ModelContracts.ITag) {
        this._value = v;
    }

    candidates = [];

    activate() {        
       this._dataService.readCandidates().then(candidates => this.candidates = candidates);
    }    
}

export interface IDataService {
    readCandidates(): Promise<ModelContracts.ICandidate[]>
} 

export class DataService {
    //some implementation
}

我正在使用Aurelia下注1.1.0和Typescript。 注入dataService依赖项但函数调用失败。

2 个答案:

答案 0 :(得分:1)

如果调用的上下文不是类(例如,因为您将activate称为回调或事件),您需要确保整理范围。< / p>

例如:

activate = () => {        
   this._dataService.readCandidates().then(candidates => this.candidates = candidates);
}

如果你想拥有a consitent approach to handling the responsibility of scope in TypeScript,有一些更好的方法可以做到这一点。建议是在课外处理范围,因为班级不应该知道如何调用它。

答案 1 :(得分:0)

在aurelia中使用DI的接口是不可能的。