VSCode 如何修复 typescript 高亮错误 Argument of type {} is not assignable to parameter of

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

我应该在函数 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 属性的返回对象由 createFieldDefaultOptions 扩展
    • 顺序很重要! createFieldDefaultOptions 需要放在第一位,以便它可以被提供的 options
    • 覆盖