Breeze Typescript Definition File中缺少方法

时间:2013-04-14 03:16:38

标签: typescript breeze

在最新的Breeze Typescript定义文件(https://github.com/borisyankov/DefinitelyTyped)中,缺少方法,特别是Validator.register和Validator.registerFactory方法。我想知道 - 这是故意的,出于某种原因吗?即使我可以编辑定义文件,我也不喜欢这样做,因为下载较新版本时我的更改会消失。有没有办法扩展定义文件?

2 个答案:

答案 0 :(得分:3)

编辑:现在可以在Breeze v1.3.0

上使用

我会将这些添加到下一个版本的Breeze,下周晚些时候。

作为旁注,可以在“TypeScript”目录中的每个版本的breeze zip文件中找到最新版本的breeze typescript定义文件。我们也尝试保持(https://github.com/borisyankov/DefinitelyTyped)更新,但可能有延迟,所以最好直接从最新的Breeze zip(或直接从GitHub)获取。

并指出这一点,如果你看到更多,请重新发布。

答案 1 :(得分:1)

回答:有没有办法扩展定义文件?

没有。 Validator被定义为一个类。类定义不是开放式的,因此以下内容无效:

declare class Validator  {
    static messageTemplates: any;
}

declare class Validator  {
    static register: any;
}

Validator被定义为一个类,因为Interfaces不支持静态方法。如果typescript支持接口上的静态成员,那么我们就可以做到:

interface Validator {
    static messageTemplates: any;

    constructor (name: string, validatorFn: ValidatorFunction, context?: any);

    static bool(): Validator;
    static byte(): Validator;
    static date(): Validator;
    static duration(): Validator;
    getMessage(): string;
    static guid(): Validator;
    static int16(): Validator;
    static int32(): Validator;
    static int64(): Validator;
    static maxLength(context: { maxLength: number; }): Validator;
    static number(): Validator;
    static required(): Validator;
    static string(): Validator;
    static stringLength(context: { maxLength: number; minLength: number; }): Validator;
    validate(value: any, context?: any): ValidationError;
}

你可以简单地完成:

interface Validator {
    register(); // Whatever your signature was 
 }

并且它会起作用,因为接口是开放式的。不幸的是,在定义文件中,它被定义为一个类,即class Validator,这就是除了修改定义文件之外无法扩展它的原因。