上下文类型只是类型推断的另一个术语吗?



我现在正在阅读很多关于TypeScript文档的内容,并注意到一些作者会说上下文类型,而另一些作者会说类型推断。有些人会以同样的方式提及它们(似乎它们只是与术语的选择不一致(。一旦我确定它们是一回事,我就会读到一些给人以它们不是的印象的东西。

在这一点上,几乎感觉有些作者自己不确定。我知道的一件事是我不确定。有人可以澄清一下吗?

上下文类型是类型推断的子集。请参阅文档中的上下文类型:

上下文类型

在某些情况下,类型推断在 TypeScript 中也以"另一个方向"工作。这称为"上下文类型"。当表达式的位置隐含表达式的类型时,将发生上下文类型。例如:

window.onmousedown = function(mouseEvent) {
console.log(mouseEvent.button);   //<- OK
console.log(mouseEvent.kangaroo); //<- Error!
};

在这里,Typescript 类型检查器使用Window.onmousedown函数的类型来推断赋值右侧的函数表达式的类型。当它这样做时,它能够推断mouseEvent参数的类型,该参数确实包含button属性,但不包含kangaroo属性。

因此,上下文类型不是通过分配给变量的内容来推断变量的类型,而是通过变量的位置来推断变量的类型。


整个页面可能值得一读。

相关内容

最新更新