2017-03-02 37 views
0

我不能完全包圍聲明。如果我只想將declare作爲模塊的一部分,這是否是正確的方法(忽略使用any)?如何聲明JS模塊的一部分?

import { Method as JaysonMethod } from 'jayson/promise'; 
declare class JaysonMethod { 
    handler: any; 
    execute(server: any, requestParams: any, callback: any) : void; 
} 

如果是這樣,如果我想要的聲明的是進口Method其他模塊可用?如果我必須將該聲明放在.d.ts文件中,是否必須始終導入Method與別名JaysonMethod? TypeScript如何將聲明與實際模塊或其中的一部分進行匹配?

我只是很困惑,似乎無法找到一個很好的解釋。

+0

'進口{方法JaysonMethod} ...'只是重命名命名出口。你創建一個變量調用JaysonMethod。 – unional

回答

0

總之,你可能會混淆變量和它的類型。

import { Method as JaysonMethod } 'jayson/promise'未聲明Method的類型,這是ES6中用於重命名命名導出的語法。

類似下面應該工作:

import { Method } from 'jayson/promise'; 

declare class JaysonMethod { ... } 
const typedMethod: JaysonMethod = Method 

// typedMethod is now typed. 
// or 
(Method as JaysonMethod)... 

更新:根據您的需要,最好是建立一個分型文件,而不是。喜歡的東西:

// custom-typings/jayson.d.ts 
declare module 'jayson/promise' { 
    export class Method { ... } 
} 

,包括它在你的tsconfig.json

{ 
    "include": [ "custom-typings" ] 
} 
+0

對不起,遲到的迴應!我不明白你的代碼如何將聲明映射到(導入的)實現。你從不再使用導入的'Method'。 – ctusch

+0

你是對的。我忘了使用'方法':) – unional

+0

我已經更新了答案。看看它是否做你想做的事情。 – unional

相關問題