繁体   English   中英

VSCode 如何修复 typescript 突出显示错误 {} 类型的参数不可分配给

[英]VSCode how to fix typescript highlight error Argument of type {} is not assignable to parameter of

我应该在 function createField中做什么才能删除此语法错误突出显示?

const createField = (
    dataType,
    options = {
        required: false,
        label: null,
        min: Number.NEGATIVE_INFINITY,
        max: Number.POSITIVE_INFINITY,
        email: false,
        match: false
    }
) => {
    return {
        dataType,
        options: {
            ...options,
            label: options.label && options.label.toString() || null,
        },
    };
};

在此处输入图像描述

这是一个可能的解决方案:

interface CreateFieldOptions {
  required?: boolean;
  // you need to change the type here
  label?: unknown;
  min?: number;
  max?: number;
  email?: boolean;
  match?: boolean;
}
const createFieldDefaultOptions: CreateFieldOptions = {
  required: false,
  label: null,
  min: Number.NEGATIVE_INFINITY,
  max: Number.POSITIVE_INFINITY,
  email: false,
  match: false
}

const createField = (
    dataType,
    options: CreateFieldOptions = {}
) => {
    return {
        dataType,
        options: {
            ...createFieldDefaultOptions,
            ...options,
            label: options.label && options.label.toString() || null,
        },
    };
};

有哪些变化?

  • 添加管理选项类型的接口 -> CreateFieldOptions
    • 所以可以重复使用
  • 将默认选项提取到单独的变量中 -> createFieldDefaultOptions
    • 您的意图似乎是将默认选项与提供的传递选项合并。 但这无法通过参数分配实现,因此必须稍后完成(参见最后一个要点)
  • options参数的类型现在是可选的CreateFieldOptions
  • 返回的带有options属性的 object 由createFieldDefaultOptions扩展
    • 顺序很重要! createFieldDefaultOptions需要放在第一位,这样它就可以被提供的options覆盖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM