在我参与的一个打字稿项目中,我无法再接触到它,我记得我似乎能够做到以下几点:
const fn = string => console.log(string)作为打字稿的新手,它似乎相当于写这篇文章:
const fn = (string:string) => console.log(string)基本上,在我看来,如果我以本机类型命名函数中的变量,那么它似乎隐式地被键入为该类型,而不是any。
当时我对打字很陌生,所以完全有可能发生了其他事情,我只是曲解了情况。
现在我正在尝试设置我自己的类型记录项目,我想将它配置为允许再次使用该功能。我不知道该怎么做,或者我想的是不是一个真正的打字功能。
这是打字稿中的一个真实特征吗?
如果是的话,我如何配置类型记录来做到这一点?
发布于 2019-12-11 14:05:35
基本上,在我看来,如果我以本机类型命名函数中的变量,那么它似乎隐式地被键入为该类型,而不是
any类型。
这是完全错误的。打字本没有这样的功能。如果你不提一种类型,打字本就会简单地认为它是any。在下面的代码中也发生了同样的事情。
const fn = string => console.log(string)string变量为any类型。如果你有一个现代的IDE,它会告诉你同样的事情,如果你悬停在它上面。

要给它一个类型,您必须特别提到一个类型,就像在后面添加的代码中一样。
const fn = (string:string) => console.log(string)

这是打字稿中的一个真实特征吗? 如果是的话,我如何配置类型记录来做到这一点?
事实并非如此,因此您无法将其配置为正常的工作方式。
发布于 2019-12-11 14:19:21
与您所描述的最接近的特性是上下文类型或类型推断。你可以在打字本的文档以获取更多细节上查到。
对于您已经给出的示例,console.log的标准(节点)定义期望message param通过any类型。这就是为什么在这种情况下,您的string参数推断为any类型。
// src: node_modules/@types/node/globals.d.ts
interface Console {
// ...
/**
* Prints to `stdout` with newline
*/
log(message?: any, ...optionalParams: any[]): void;
// ...
}https://stackoverflow.com/questions/59285759
复制相似问题