gpt4 book ai didi

javascript - Flow 不会提示不正确的类型

转载 作者:数据小太阳 更新时间:2023-10-29 05:14:30 24 4
gpt4 key购买 nike

在这段代码中,流并没有提示在状态上设置了值 dog。它似乎忽略了 NamespaceData 定义。我已经设置了类型,所以它应该提示。我在核素上运行,流量对其他一切都正常工作。

action 的所有属性,例如namespaceprojectcollection 都是字符串。

// @flow

import { NAMESPACE_SET } from '../actions/NamespaceActions'

type NamespaceData = {
project: string,
collection: string,
}

type NamespaceState = {
[namespace: string]: NamespaceData,
}
const initialState: NamespaceState = {}

function namespaceReducer(state: NamespaceState = initialState, action: Object): NamespaceState {
switch (action) {
case NAMESPACE_SET: {
return {
...state,
[action.namespace]: {
project: action.project,
collection: action.collection,
dog: 1,
}
}
}
}
return state
}

export default namespaceReducer

最佳答案

默认情况下,Flow 对对象中的未知属性不严格,例如

// @flow

type Thing = {
known: string;
};

var obj: Thing = {
known: 'hi',
unknown: 4,
};

即使 unknown 不在类型中,类型检查也很好。

流量0.32包括

  • 精确对象类型的新语法:使用 {|和 |} 而不是 { 和 }。其中 {x: string} 至少包含属性 x,{| x: string |} 仅包含属性 x。

在您的示例中,您需要精确的对象语法:

type NamespaceData = {|
project: string,
collection: string,
|};

关于javascript - Flow 不会提示不正确的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40731795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com