2015-03-25 159 views
1

我正在爲RiotJS創建TypeScript定義。這LIB採用嵌套函數,像這樣:TypeScript - 構建.d.ts定義文件 - 嵌套函數。

riot.route(args); // function 
riot.route.parser(args); // function in function 

這裏是我到目前爲止的摘錄:

declare module riot 
{ 
    export function route(callback : Function) : void 
    export function route(to : string) : void 
} 

我不知道如何組織定義爲「riot.route.parser ()「嵌套函數,並想知道是否有人有任何見解分享?

謝謝

回答

3

下面是一個使用內聯打字的實現:。

declare var riot: { 
    route: { 
     (callback: Function): void 
     parser: { 
      (args): any; 
     } 
    }; 

} 

riot.route(() => null); // function 
riot.route.parser(1); // function in function 

我建議你把它分解成接口,根據命名他們要麼目的或)二)如何實際文檔稱它們。

一個例子,讓你開始:

interface Riot { 
    route: { 
     (callback: Function): void 
     parser: { 
      (args): any; 
     } 
    }; 

} 
declare var riot:Riot; 

riot.route(() => null); // function 
riot.route.parser(1); // function in function 

更新

的功能重載其中的參數返回類型/個數不改變,我建議聯盟類型:

interface Riot { 
    route: { 
     (toOrCallback: string|Function): void 
     (callback: Function): void 
     parser: { 
      (args): any; 
     } 
    }; 

} 
+0

謝謝。出於興趣,你如何用定義重載'路線'功能。即: \t「導出函數路徑(回調:功能):無效 \t導出函數路徑(到:字符串):無效」 或者,你纔剛剛任何回調? – user2386872 2015-03-25 10:58:26

+1

@ user2386872只是使用聯合類型。請參閱更新 – basarat 2015-03-25 22:13:48

+0

聰明 - 如果可以的話,我會再給你一個大拇指。再次感謝你 。 – user2386872 2015-03-27 10:38:49