为什么有时无法定义从其他模块引用的功能,但后来又定义了?

时间:2019-01-06 06:10:50

标签: typescript testing

如果我在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()时可用的方法有什么用吗?还是我误会了如何正确定义地图?

谢谢!

0 个答案:

没有答案