call()没有返回正确的类型

时间:2019-10-02 12:13:45

标签: typescript

我有以下打字稿:

let fn = function (): boolean {
    return true
}

let res1: number

res1 = fn.call(null) // Should error

不允许我分配res1,因为它被声明为number,并且fn.call()的结果将是boolean。签入the playground

这是issue,但它是fixed,所以我做错了吗?

2 个答案:

答案 0 :(得分:5)

有一个特殊的编译器选项(在操场上不可用),它使callbindapply保留正确的类型。

该选项为strictBindCallApply,您可以阅读有关here的信息:

  

启用对函数的绑定,调用和应用方法的更严格检查。

将此选项设置为true时,您的代码将按预期错误。

答案 1 :(得分:-1)

很奇怪。或者,您可以使用fn()直接调用该函数,它将引发编译错误。

let fn = function (): boolean {
    return true
}

let res1: number
res1 = fn() // Will definitely result in error.