面试题答案
一键面试Func1
与Func2
的兼容性:- 能否将
Func1
赋值给Func2
类型的变量:- 不能。
Func1
只接受一个string
类型的参数,而Func2
需要一个string
类型和一个boolean
类型的参数。当把Func1
赋值给Func2
类型的变量时,在调用这个变量时,可能会尝试传入第二个boolean
类型参数,而Func1
并不接受第二个参数,所以Func1
不能赋值给Func2
类型的变量。
- 不能。
- 能否将
Func2
赋值给Func1
类型的变量:- 可以。在JavaScript和TypeScript的函数类型兼容性规则中,赋值目标函数的参数比源函数的参数多是允许的。因为调用
Func1
类型变量时,只会传入一个string
类型参数,Func2
函数也接受一个string
类型参数作为第一个参数,多出来的boolean
类型参数在这种赋值情况下不会被使用,所以Func2
可以赋值给Func1
类型的变量。
- 可以。在JavaScript和TypeScript的函数类型兼容性规则中,赋值目标函数的参数比源函数的参数多是允许的。因为调用
- 能否将
Func3
与Func1
的兼容性:- 能否将
Func3
赋值给Func1
类型的变量:- 不能。
Func1
返回number
类型,而Func3
返回void
类型。在类型兼容性中,返回值类型必须是兼容的,void
类型与number
类型不兼容,所以Func3
不能赋值给Func1
类型的变量。
- 不能。
- 能否将
Func1
赋值给Func3
类型的变量:- 不能。
Func3
返回void
,而Func1
返回number
,number
类型与void
类型不兼容,所以Func1
不能赋值给Func3
类型的变量。
- 不能。
- 能否将