如何解决“预期的呼叫签名具有typedef”错误

时间:2019-06-17 07:21:10

标签: reactjs typescript

我的渲染JSX元素中有一个switch case函数,该函数基于返回值在另一个const值中使用。

我尝试在线寻找解决问题的方法,但是即使在我的代码上尝试过之后,我发现的答案也都无法解决问题。

function carouselClass(transitionTypeValue: any) {
            switch(transitionTypeValue) {
                //Different cases and their return values
            }
   }

   const classes = xyz(carouselClass(transitionType)) //Sample of where I'm using my switch function

代码在Typescript端运行良好,但出现了一条错误消息,提示“ typedef预期的呼叫签名:'carouselClass'具有typedef”

我已尽力提供足够的背景信息,如果这是我第一次发布问题,请告诉我是否需要更多信息。

3 个答案:

答案 0 :(得分:1)

Linter发出“缺少类型定义”警告。看一下这个- https://github.com/palantir/tslint/blob/master/src/rules/typedefRule.ts了解详情。

解决方案:您需要明确指定函数的返回类型

function carouselClass(transitionTypeValue: any):any {
            switch(transitionTypeValue) {
                //Different cases and their return values
            }
   }

答案 1 :(得分:0)

我认为如果要调用函数并返回某些内容,则应该添加返回类型。

    function carouselClass(transitionTypeValue: any):any {
            switch(transitionTypeValue) {
                //Different cases and their return values
            }
   }

   const classes = xyz(carouselClass(transitionType)) 

您应尽可能避免使用 any 类型。

答案 2 :(得分:0)

避免返回任何或具有多种类型的值, 但是如果您仍然想返回多种类型的值,请尝试查找相似性并创建Enum类型或Wrapper接口,也可以尝试创建泛型函数。

    interface IClassType extend IClassA, IClassB {}

    function carouselClass(transitionTypeValue: any): IClassType {
            switch(transitionTypeValue) {
                // Different cases and their return values
                // Avoid returning multiple types, 
                // but if you still want to return multiple types of value, 
                // try to find similarity and create Enum type or Wrapper Interface
            }
   }

   const classes: xyz<IClassType> = xyz(carouselClass(transitionType))