【问题标题】:TypeScript complains about returning boolean when it's objectTypeScript 抱怨当它是对象时返回布尔值
【发布时间】:2020-01-25 10:46:08
【问题描述】:

有一个createFields这样的函数

map 来自 lodash

const createFields = (usecase: SchemaObject): FieldInterface[] => {
  // TODO: Make the form blueprint to be generated from json schema

  const properties = usecase.properties;
  const requiredProperties = usecase.required || [];

  if (properties && isSchemaObject(properties)) {
    return map(
      properties,
      (value: SchemaObject, key: string): FieldInterface => {
        return {
          type: value.type,
          name: key,
          label: key,
          readonly: false,
          required: requiredProperties.includes(key),
          validations: [],
        };
      },
    );
  }
  return [];
};

如图所示,typescript 在map 函数的返回值和迭代对象的返回值上报错。

但是返回值是一个对象,你可以在代码中看到。如果我将 iteratee 的返回类型更改为 boolean,它会反过来抱怨,就像这样。

这里有什么问题? boolean 是如何返回的?

【问题讨论】:

  • import { map } from 'lodash'; 对吧?
  • @PhatHuynh 是的,我做到了。

标签: typescript


【解决方案1】:

这与 lodash map 函数重载有关。

TypeScript with Lodash: _.map(["123", " 234 "], _.trim) returns boolean[]?

所以要么需要正确的重载。

或者将 lodash map 替换为原生 Object.entries(object).map(([key, value]) => {})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2016-08-14
    • 2019-10-09
    • 1970-01-01
    相关资源
    最近更新 更多