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通过在中设置流,可以禁止整个项目中的任何内容