2015-06-30 71 views
0

我正在尝试设置一个接口,它将实现(不扩展)的Typescript,并且我希望其中一个函数始终是私有的。这可能吗?是否可以在接口中声明一个私有函数?

export interface ITabViewModel { 
    isLoading: KnockoutObservable<boolean>; 
    private setActiveTab(): void; 
} 

export class TabViewModel implements ITabViewModel { 
    isLoading: KnockoutObservable<boolean>; 
    private setActiveTab(){ 
     // DO SOMETHING HERE 
    } 
} 

回答

7

不,界面的成员总是公开的。

私有函数是实现细节的一部分,因此在接口上使用私有函数是没有意义的。

+0

这就是我的想法,但想确保我没有失去一些东西。 –

+0

我也尝试将它设置为在接口中公开,然后强制它在实现中私有,这也失败了。 –

+1

@JasonH是啊,你不能使私有的实现功能。如果'setActiveTab'在接口中,但在实现中标记为private:'var myTabViewModel:ITabViewModel = new TabViewModel();''myTabViewModel'的类型是'ITabViewModel'。现在......以下是错误吗? 'myTabViewModel.setActiveTab();'这就是为什么不允许私有实现......这是没有道理的。 –

相关问题