我正在使用带有TypeScript的ImmutableJS Map类型。如果我尝试在Map上调用map()方法,则即使我不允许在K或V中使用undefined,映射器方法所需的参数类型也必须接受“ undefined”。
例如这不起作用:
const myMap: Immutable.Map<string, string>;
myMap.map((value: string) => { ... });
因为打字稿编译器抱怨“未定义不能分配给类型字符串”。确实,如果我查看类型文件中map()方法的定义,它的定义如下:
map<M>(
mapper: (value?: V, key?: K, iter?: /*this*/Iterable<K, V>) => M,
context?: any
): /*this*/Iterable<K, M>;
为什么值和键带有问号?换句话说,在什么情况下,如果我在Map声明中不允许我的mapper函数传递这些参数之一的“未定义”?
谢谢!