我有一个定义了许多功能的模块:
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
};
在运行时,我可以在这两种实现之间进行选择。
是否有更简单的方法来确定导入模块的接口并进行动态替换?
答案 0 :(得分:0)
由于TypeScript使用结构类型,因此无需定义显式接口(Force
)并将其用作importImpl
和globalImpl
的类型。两者都已经具有相同的推断接口。
如果您在代码中的其他位置需要此类型,我认为我们可以“捕获”#34;这样:type Force = typeof force;
。