typescript的interface约束函数问题

是否有点重复、冗余?

interface SearchFunc {
  (source: string, subString: string): boolean;
}
let mySearch: SearchFunc = function(source: string, subString: string) { //这行
  let result = source.search(subString);
  return result > -1;
}
mySearch = function(src, sub) {
    let result = src.search(sub);
    return result > -1;
}

interface已经规定了函数接收的参数类型,下面定义函数时,还有必要再规定参数类型吗?
第二种写法算规范的吗?

阅读 3.2k
2 个回答

当你interface约束函数的参数是string类型时,你在函数的定义let mySearch: SearchFunc = xxx可以忽略参数的类型(上面你同样省略了返回值类型,但是类型检查依然存在),但是你在调用函数执行的时候,会对传入的参数类型进行检查,如果不是string类型会出现编译错误。如果你没有用interface约束函数,那么还是推荐你写上参数类型。不知道我这样回答你能不能理解

不用再写了,但是最好在定义的时候就赋值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题