【发布时间】:2019-02-08 08:20:21
【问题描述】:
这是我在尝试使用泛型进行注释时遇到的 Flow 错误的简化示例:
// @flow
function component<T>(state: T) {
let model = deepFreeze(state);
// ^ Cannot call `deepFreeze` with `state` bound to `o`
// because `T` [1] is incompatible with object type [2].
return {
update: (state: T) => {
// etc.
}
};
}
function deepFreeze(o: Object) {
Object.freeze(o);
// etc.
return o;
}
在我看来,<T> 应该简单地跟踪类型,无论它是什么。
在这个例子中,我使用了我能找到的最不具体的类型,文档说:“如果你需要选择退出类型检查器,并且不想一直使用任何类型,您可以改为使用 Object"。
那么,当多态类型不可避免地最终在别处以更具体的方式使用时,如何使用多态类型呢?
【问题讨论】:
标签: javascript generics flowtype