访问对象上具有默认值的字段时如何修复流错误?
How to fix Flow error when accessing a field with default value on an object?
例子
问题
我正在尝试访问我认为应该 始终存在的对象上的字段。
下面的流程错误如何解决?
片段
problem = (arg: {refKey: string} = {}) => {
const {refKey = 'ref', ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};
错误:
19: [refKey]:arg[refKey],
^ Cannot get `arg[refKey]` because property `ref` is missing in object type [1].
References:
16: problem = (arg: {refKey: string} = {}) => {
^ [1]
发生这种情况是因为您在声明时设置了值。
如果要设置默认值,可以在默认参数中设置,像这样:
problem = (arg: {refKey: string} = {refKey: 'ref'}) => {
const {refKey, ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};
编辑
好吧,我想我误解了这个问题,现在明白了(!)。
如果默认的属性会被命名为'ref'
,你可以这样做:
problem = (arg: {refKey: string, ref: any} = {}) => {
const {refKey = 'ref', ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};
例子
问题
我正在尝试访问我认为应该 始终存在的对象上的字段。
下面的流程错误如何解决?
片段
problem = (arg: {refKey: string} = {}) => {
const {refKey = 'ref', ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};
错误:
19: [refKey]:arg[refKey],
^ Cannot get `arg[refKey]` because property `ref` is missing in object type [1].
References:
16: problem = (arg: {refKey: string} = {}) => {
^ [1]
发生这种情况是因为您在声明时设置了值。
如果要设置默认值,可以在默认参数中设置,像这样:
problem = (arg: {refKey: string} = {refKey: 'ref'}) => {
const {refKey, ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};
编辑
好吧,我想我误解了这个问题,现在明白了(!)。
如果默认的属性会被命名为'ref'
,你可以这样做:
problem = (arg: {refKey: string, ref: any} = {}) => {
const {refKey = 'ref', ...rest} = arg;
return {
[refKey]:arg[refKey],
...rest
};
};