如果我在foo.ts中定义如下函数:
export function bar(): void { }
然后,我在另一个模块中定义一个引用该函数的映射,并尝试像这样使用它:
import { bar } from './foo'
const myMap = new Map<number, () => void>([
[0, bar],
]);
function test(): void {
const method = myMap.get(0);
// at this point here, 'method' is undefined
}
但是,如果我相反地(毫无意义地)从'test'方法内部设置了完全相同的值,则如下所示:
function test(): void {
myMap.set(0, bar);
const method = myMap.get(0);
// now 'method' is no longer undefined
(我想呢),如果我改为这样定义myMap:
const myMap = new Map<number () => void>([
[0, () => baz()],
]);
...但是保持“测试”不变,然后定义“方法”,并从“测试”内部调用它成功调用baz()。
为什么我会看到这种行为?关于Typescript如何处理模块导入,在定义myMap时未定义导入的方法,而在运行test()时可用的方法有什么用吗?还是我误会了如何正确定义地图?
谢谢!