Javascript flow中是否设置了禁止使用';任何';在任务中?
当为已知类型分配Javascript flow中是否设置了禁止使用';任何';在任务中?,javascript,flowtype,Javascript,Flowtype,当为已知类型分配任何值时,是否有方法确保在流中生成错误 // @flow strict type MyType = {| propA: string |}; const x: MyType = { propA: "Hello, Stackoverflow!" // Works. }; const y: MyType = { propA: x[0] // Works, but I don't want it to. }; const z: MyType = { propA:
任何值时,是否有方法确保在流中生成错误
// @flow strict
type MyType = {|
propA: string
|};
const x: MyType = {
propA: "Hello, Stackoverflow!" // Works.
};
const y: MyType = {
propA: x[0] // Works, but I don't want it to.
};
const z: MyType = {
propA: window.propDoesNotExist // Works, but I don't want it to.
};
.flowconfig
...
[strict]
nonstrict-import
unclear-type
unsafe-getters-setters
untyped-import
untyped-type-import
我想对propA
进行额外的严格,以便只允许已知的string
值。您可以定义对象的键和值的类型:
如果您需要严格的密钥:
type Enum = 'propA' | 'propB';
type MyType = {
[Enum]: string
};
type MyType = {
[string]: string
};
如果不需要严格的密钥:
type Enum = 'propA' | 'propB';
type MyType = {
[Enum]: string
};
type MyType = {
[string]: string
};
引用文件:
出于文档目的,可以选择命名索引器:
编辑:在任何用法上触发一个错误=>正确键入窗口
对象可能吗?我正在使用窗口
作为示例。我更新了这个问题,加入了一种使用索引器获取any
值的替代方法。flow是否认为括号属性访问器是动态的,因此假设它无法分析它?@JamesKraus,是的,它被认为是any
的一种类型,并且允许作为字符串的值。谢谢,了解这一点很有用。它仍然没有严格禁止使用any
设置已知值propA=UnknownyVar代码>通过在中设置流,可以禁止整个项目中的任何内容