我的渲染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”
我已尽力提供足够的背景信息,如果这是我第一次发布问题,请告诉我是否需要更多信息。
答案 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))