【发布时间】:2015-04-28 17:34:53
【问题描述】:
我要创建一个 TypeScript 接口,它不仅要求存在特定的属性,而且还禁止不属于定义的属性。这是一个例子:
export interface IComponentDirective {
scope : any;
templateUrl : string;
};
var ddo : IComponentDirective = {
scope: {
dt: '='
},
templateUrl: 'directives.datepicker',
controller: function() {
console.log('hello world');
}
};
即使controller 没有在接口中定义,ddo 赋值也不会引发错误。做一些研究,这看起来可能是设计的:
请注意,我们的对象实际上有比这更多的属性,但是 编译器仅检查是否至少存在所需的 并匹配所需的类型。
但是请注意,在我将 ddo 声明为 IComponentDirective 之后,如果我尝试类似的操作:
ddo.transclude = false;
编译器会抱怨:
2339 类型上不存在属性“transclude” 'IComponentDirective'。
有没有办法强制执行更严格的合同?
【问题讨论】:
标签: interface typescript typescript1.4