我有以下打字稿:
let fn = function (): boolean {
return true
}
let res1: number
res1 = fn.call(null) // Should error
不允许我分配res1
,因为它被声明为number
,并且fn.call()
的结果将是boolean
。签入the playground。
答案 0 :(得分:5)
有一个特殊的编译器选项(在操场上不可用),它使call
和bind
和apply
保留正确的类型。
该选项为strictBindCallApply
,您可以阅读有关here的信息:
启用对函数的绑定,调用和应用方法的更严格检查。
将此选项设置为true时,您的代码将按预期错误。
答案 1 :(得分:-1)
很奇怪。或者,您可以使用fn()
直接调用该函数,它将引发编译错误。
let fn = function (): boolean {
return true
}
let res1: number
res1 = fn() // Will definitely result in error.