我有一些看起来像这样的代码
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'的签名是不兼容的
怎么回事?
答案 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')" />
并且错误消失了。