0

我有一些看起来像这样的代码

interface KnockoutObservableArrayStatic {
    fn: KnockoutObservableArrayFunctions<any>;
    <T>(value?: T[]): KnockoutObservableArray<T>;
}
declare var ko: KnockoutObservableArrayStatic;

我想创建一个类型为TElement的空可观察数组,它应该是这样的

var elementArray: TElement[] = null;
var observableArray = ko(elementArray);

但是编译器给了我错误

无法将“KnockoutObservableArray”转换为“KnockoutObservableArray”:“KnockoutObservableArray”和“KnockoutObservableArray”类型的调用签名不兼容

怎么来的?

4

2 回答 2

3

没有看到所有代码就很难说,但这听起来像是一个编译器错误(基本上你不应该看到“无法将 T 转换为 T”错误)。如果您可以使用独立示例发布问题,我可以验证代码是否使用最新的 TypeScript 编译器进行编译。像这样与 Knockout 类型结构的通用兼容性存在几个错误。

于 2013-10-14T16:56:32.563 回答
0

我在 VS2013 中编译解决方案时遇到了同样的问题。

我从 MyProject.csproj 文件中删除了这两行

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets')" />

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />

并且错误消失了。

于 2014-07-10T10:21:43.773 回答