typescript中的泛型函数调用抛出错误

时间:2013-10-14 16:22:20

标签: typescript

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

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'的签名是不兼容的

怎么回事?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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')" />

并且错误消失了。