javascript 有没有办法不用执行就知道函数返回值的类型?

gupuwyp2  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(152)

我在一个对象中有一个函数数组,一个返回对象,另一个返回字符串:

{
  id: 'test-1',
  children: [
    function childOne() {
      return {
        id: 'child-1'
      }
    },
    function childTwo() {
      return 'text.'
    }
  ]
}

有没有一种方法可以在不执行函数的情况下检测返回值的类型?

b4lqfgs4

b4lqfgs41#

在JavaScript中没有,因为:

  • 声明返回类型不是JavaScript的概念。
  • 即使使用解析器解析函数的源代码,函数也可以根据其输入、关闭的状态、查看的时间甚至随机返回不同的类型。

TypeScript在JavaScript中添加了一层静态类型检查,如果你经常需要的话。但即使这样,这些信息在运行时也会被删除,所以如果你在运行时需要这些信息,TypeScript也帮不上忙。
相反,您需要将其作为信息包含在数组中,例如:

{
  id: 'test-1',
  children: [
    {
      returns: "object",
      fn: function childOne() {
        return {
          id: 'child-1'
        };
      }
    },
    {
      returns: "string",
      fn: function childTwo() {
        return 'text.';
      }
    }
  ]
}

或者,由于函数是对象:

{
  id: 'test-1',
  children: [
    addReturns("object", function childOne() {
      return {
        id: 'child-1'
      }
    }),
    addReturns("string", function childTwo() {
      return 'text.'
    })
  ]
}

...其中addReturns为:

function addReturns(type, fn) {
  fn.returns = type;
  return fn;
}

相关问题