- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个函数:
const example = (item : ?{+type?: ?string}) : {+result: ?string} => {
const state = {}
state.result = item.result
return state
}
这无法进行类型检查:
12: state.result = item.result
^^^^^^^ property `result`. Property not found in
12: state.result = item.result
^^^^^^ object type
为什么不进行类型检查?我没有使用确切的对象类型符号 ?{|+type?: ?string|}
定义类型,所以它不应该允许额外的键吗?那么精确的对象表示法是如何工作的呢?我如何定义这样的部分对象类型?这可能吗?
最佳答案
听起来您正在尝试对参数 item
可以具有任何属性的类型进行编码。这听起来像一张 map ,Flow 对其进行编码:
{ [key: KeyType]: ValueType };
您的示例可以这样更新:
const example = (item : ?{[key: string]: string}) : {+result: ?string} => {
const state = {}
if(item)
{
state.result = item.result;
}
return state
}
请注意,您必须对 item
进行 null 检查,否则它将不会进行类型检查,因为您在函数签名中将其声明为可为 null。
如果item
有某些必需的属性,那么您可以使用交集类型来添加该约束。我将为此创建一个新类型,以便更容易阅读签名:
type Item = {[key: string]: string} & {type: string}
const example = (item : ?Item) : {+result: ?string} => {
const state = {}
if(item)
{
state.result = item.result;
}
return state
}
example({type: 'blah', x: '2'}); // OK
example({'blah', x: '2'}); // Error: type is missing
关于javascript - 具有部分定义的对象类型 flowjs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42195800/
我有以下类型定义(请注意,path 是可选的): type MyType = { name: string, path?: Array }; 然后在我的代码中,我在某些地方 path 绝对 具
假设我有一个函数: const example = (item : ?{+type?: ?string}) : {+result: ?string} => { const state = {}
在 redux 中,状态应该是不可变的。我希望 Flow 阻止任何人改变该状态。因此,给定一个任意深度的对象: type object = { a: { b: { d: str
我尝试使用 Flow 键入以下代码 type Metadata = { currentPage: string, }; type State = { result: {
假设我有以下流程类型: type formExample = { +form?: { +[string]: { values: { [string]: stri
有人可以解释为什么我使用这段代码会出现以下 FlowJS 错误吗? number 1 is incompatible with string [2] (the white box around num
TypeScript 似乎有一个重要的小功能,可以让您将成员添加到现有的接口(interface)定义中。在接口(interface)中,成员是可加的,因此如果您使用一组成员定义接口(interfac
我有各种 React 组件,当传入不同的 props 时,它们可以具有不同的功能。我经常遇到一些分支逻辑,其中 if prop1存在,做一件事,但如果 prop2在场做别的事情。 一个例子可能是一个元
以下代码会导致错误: type NextItem = string | { [string]: string }; const next: NextItem = 'foo'; const isStri
如何在 Flow 中使用 Union 编写内联柯里化(Currying)函数类型? 以下示例可以正常工作: type Foo = () => () => string; function func(f
假设我有一个恒定的动物,我用它导入 import animals from './animals 假设动物常数是: { hoofed:[ 'horses', 'sheep',
我正在尝试在我的异步函数中使用 fetch,但是流程抛出了这个错误 错误:(51, 26) 流程: promise 。此类型与 union 不兼容:标识符 Promise 的类型应用 | await
心流问题似乎没有什么答案,但这里是: type Base = { foo: string, bar: string } type Derived1 = Base & { condition
我正在使用 Flowjs 及其 ng-flow 指令以 NodeJS 作为后端上传文件。当我尝试上传文件时,仅上传 tem 文件夹中的文件,但请注意 JPG 或 PNG 等任何类型的文件。 (流-13
切换到flow 0.54.0后如下代码片段: function runKarmaTest() { const KARMA_CONFIG = {}; return new Promise
我是一名优秀的程序员,十分优秀!