![](/img/trans.png)
[英]Use import/require in TypeScript to get interface declarations
[英]Typescript use a module import as an interface
我有一個定義許多功能的模塊:
export function setNodeCount(count: i32): void {
nodeCount = count;
}
export function getNodeCount(): i32 {
return nodeCount;
}
然后將其導入到另一個打字稿文件中,如下所示:
import * as force from '../force';
我希望能夠使用全局范圍內的變量模擬/交換force
。
為了實現這一點,我必須為該模塊導出的功能定義一個接口:
interface Force {
setNodeCount: (number) => void;
getNodeCount: () => number;
}
然后通過導入的模塊或全局模塊來實現:
const importImpl: Force = {
setNodeCount: force.setNodeCount,
getNodeCount: force.getNodeCount
}
const globalImpl: Force = {
getNodeCount: globalObject.getNodeCount,
setNodeCount: globalObject.setNodeCount
};
然后,在運行時,我可以在這兩種實現之間進行選擇。
有沒有更簡單的方法來確定導入模塊的接口並以動態方式替換它?
由於TypeScript使用結構化類型,因此不必定義顯式接口( Force
)並將其用作importImpl
和globalImpl
的類型。 兩者已經具有相同的推斷接口。
如果您在代碼的其他地方需要這種類型,我認為我們可以通過這種方式“捕獲”它: type Force = typeof force;
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.