【问题标题】:Specify a function's type inline with typescript使用打字稿内联指定函数的类型
【发布时间】:2018-07-17 21:30:06
【问题描述】:

打字稿中有没有办法在打字稿中定义函数的类型(注意:不是箭头函数)?

我知道以下方法:

const MyFunctionCreator = (): MyFunction => {
    return function(input) {
        return "";
    };
};

但是,我试图在类中设置静态函数的类型,所以这并不理想。

class MyClass {
    static function(input) {
        return "";
    }
}

上面的例子中有没有办法做类似的事情:

class MyClass {
    static myFunction: MyFunction(input) {
        return "";
    }

    static myFunction(input) {
        return "";
    } as MyFunction
}

我当然可以每次都重新输入参数/返回类型,但我希望在我的类之间共享类型。

【问题讨论】:

  • 不确定您在这里寻找什么?为什么在声明函数签名时不能只定义函数签名?您可以使用类型查询重用该类型。
  • 我想为整个函数分配一个类型,我不想每次在其他地方创建相同的函数时都重新定义签名。

标签: typescript


【解决方案1】:

您可以使用函数字段而不是成员。对于静态字段,没有太大区别,例如每次创建对象时都会分配它们的字段,因此可能会对您创建大量实例时产生性能影响。

type MyFunction = (input : string) => number

class MyClass {
    static myFunction: MyFunction = function (input) {
        return input.length; // input is string
    }

    // error wrong return type
    static myFunctionError: MyFunction = function (input) {
        return input; 
    }
}

【讨论】:

  • 我知道箭头函数,我想知道的是你是否可以在没有箭头函数的情况下做到这一点
  • 不是箭头函数,是函数表达式。但这是唯一可用的选项,95% 的把握 :)
猜你喜欢
  • 2022-01-23
  • 2017-02-20
  • 2022-01-13
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-07-07
  • 2021-01-07
相关资源
最近更新 更多