2013-04-14 57 views

回答

3

編輯:這些都是現在可在微風V1.3.0


我將它們添加到微風的下一個版本,出來以後這種下週。

作爲一個側面說明,最近的微風打字稿定義文件的版本可以在「打字稿」 DIR各版本的微風中的zip文件中找到。我們儘量保持(https://github.com/borisyankov/DefinitelyTyped)更新,但可能會有延遲,所以最好直接從最新的Breeze zip(或直接從GitHub)獲取它。

而且指出了這一點THX,如果你看到的更多信息,請重新發布。

+0

Jay - 就你所知,有什麼方法可以擴展定義文件嗎?並感謝您的迴應以及這款精美的軟件。 – CCPony

+0

您選擇將其聲明爲類而不是定義文件中的接口的任何原因?看到我爲什麼問我的答案。 – basarat

+0

這是一個好主意,我沒有意識到。我也會改變這一點。 –

1

回答:有沒有什麼辦法來擴展定義文件?

號驗證程序被定義爲一類。類定義是不公開的結束,以便以下是無效的:

declare class Validator { 
    static messageTemplates: any; 
} 

declare class Validator { 
    static register: any; 
} 

驗證被定義爲一類,因爲接口不支持靜態方法。如果打字稿已經在接口上支持靜態成員那麼我們可以做:

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,這就是爲什麼除修改定義文件之外無法擴展它的原因。

+0

我不知道這會工作,因爲'register'方法是Validator類的靜態方法,並且據我所知,不能將'statics'添加到TypeScript接口。 –

+0

@JayTraband我的壞。感謝更新。 – basarat

+0

@JayTraband這裏是一個建議,只使用接口建模靜態:http://basarat.github.io/TypeScriptDeepDive/#/modellingstatics – basarat