是否有点重复、冗余?
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已经规定了函数接收的参数类型,下面定义函数时,还有必要再规定参数类型吗?
第二种写法算规范的吗?
当你
interface
约束函数的参数是string类型时,你在函数的定义let mySearch: SearchFunc = xxx
可以忽略参数的类型(上面你同样省略了返回值类型,但是类型检查依然存在),但是你在调用函数执行的时候,会对传入的参数类型进行检查,如果不是string
类型会出现编译错误。如果你没有用interface
约束函数,那么还是推荐你写上参数类型。不知道我这样回答你能不能理解