我刚刚升级打字稿,现在是给我的knockout.validation.d.ts行错误:typescript编译器错误? knockout.validation.d.ts不从V2.3到V2.4编译了
interface KnockoutSubscribableFunctions<T> {
isValid: KnockoutComputed<boolean>;
isValidating: KnockoutObservable<boolean>;
rules: KnockoutObservableArray<KnockoutValidationRule>;
isModified: KnockoutObservable<boolean>;
error: KnockoutComputed<string>;
setError(error: string): void;
clearError(): void;
}
这里,knockout.validation试图表明KnockoutSubscribableFunctions现在有额外的成员。这里是knockout.d.ts了这个接口的定义:
interface KnockoutSubscribableFunctions<T> {
[key: string]: KnockoutBindingHandler;
notifySubscribers(valueToWrite?: T, event?: string): void;
}
编译器现在抱怨:
型“KnockoutComputed”的特性“的isValid”是不能分配给字符串索引类型“KnockoutBindingHandler” 。
我不明白为什么它没有看到这些新值作为界面中的新属性?为什么它试图说他们必须映射到索引签名? docs似乎表明您可以在同一接口中拥有索引签名和其他属性。
我把接口的初始定义放到了操场上,它甚至抱怨notifySubscribers不能分配给KnockoutBindingHandler。
使用新的编译器如何获得此代码进行编译?
现在有一个强大的方法来获得这个编译。我改变了knockout.d.ts定义是:存在的,因为在类型上的差异
interface KnockoutSubscribableFunctions<T> {
[key: string]: any;//KnockoutBindingHandler;
notifySubscribers(valueToWrite?: T, event?: string): void;
}
您在原始界面上单独出现错误?还是有更多的代码?我不明白为什么你会得到一个错误,除非你试图将某些东西分配给'KnockoutSubscribableFunctions'类型的东西。 –
编译器在knockout.d.ts中标记错误,即使它抱怨在knockout.validation.d.ts中定义的成员。这似乎与我的代码无关。我将看到有关创建仅包含这两个.d.ts文件的全新项目。但我的印象是,只有将这两个文件放在一起才会给我带来错误。 –
哦,如果不明确,在2.3版本的编译器中编译得很好。我刚升级到2.4。1,并且在编译相同的项目时没有对该项目进行任何更改而出现此错误。 –