TypeScript 编译错误与 JayData 库和 JaySvcUtil 生成的代码



刚开始使用JayData lib.并希望获得TypeScript的好处。我在VS2013项目中包含了以下文件:- 杰达特.js- 杰达特JayDataContext.js,使用 JaySvcUtil 创建(v. 1.3.5)JayDataContext.d.ts,由JaySvcUtil创建

1) There is a compile error in jaydata.d.ts, line 2
interface IPromise<T> extends Object {
Error   1   Interface '$data.IPromise<T>' cannot extend interface 'Object':
Types of property 'valueOf' of types 'IPromise<T>' and 'Object' are incompatible:
Call signatures of types '() => any' and '() => Object' are incompatible.   C:Usersrobbindocumentsvisual studio 2013ProjectsTypeScriptHTMLApp1TypeScriptHTMLApp1scriptsjaydata.d.ts    2   15  TypeScriptHTMLApp1
2)There are a lot of compile errors in JayDataContext.ts beacuse '$data.IPromise' it is not 'used' as generic type
Error   2   Generic type references must include all type arguments.    C:Usersrobbindocumentsvisual studio 2013ProjectsTypeScriptHTMLApp1TypeScriptHTMLApp1scriptsjaydatacontext.d.ts 1623    16  TypeScriptHTMLApp1

我想我错过了一些琐碎的东西,但我不知道是什么。谁能帮我?谢谢。

1) 对象接口在 lib.d.ts 中定义,在最新版本中随着类型推断系统的总体收紧而略有变化。 只需更改 jaydata.d.ts,以便valueOf返回一个Object就可以解决了。

interface IPromise<T> extends Object {
    then: {
        (handler: (args: T) => void ): IPromise<any>;
        (handler: (args: T) => any): IPromise<any>;
    };
    fail: {
        (handler: (args: T) => void ): IPromise<any>;
        (handler: (args: T) => any): IPromise<any>;
    };
    valueOf(): Object;
}

2)这是由相同的拧紧引起的。 以前,当有一个没有类型参数的泛型类型时,它会假设任何类型,现在它是一个错误,而不是做出这个假设。 如果您只是将其显式化,则代码将正常工作。 例如:

老:

var x: IPromise;

新增功能:

var x: IPromise<any>;

我的理解是,如果这些重大更改在 1.0 版本之后不会发生。

相关内容

  • 没有找到相关文章

最新更新