打字稿隐式类型(不隐式任何)
Typescript implicit types (not implicit any)
在我无法再访问的 Typescript 项目中,我记得似乎能够执行以下操作:
const fn = string => console.log(string)
刚开始接触Typescript,感觉相当于这样写:
const fn = (string:string) => console.log(string)
基本上,在我看来,如果我以原生类型命名函数中的变量,它似乎隐含地被键入为该类型,而不是 any
。
虽然当时我对 Typescript 还很陌生,所以完全有可能真的发生了其他事情,我只是误解了情况。
现在我正在尝试建立自己的打字稿项目,我想对其进行配置以再次启用该功能。我不确定该怎么做,或者我在想的是不是真正的 Typescript 功能。
这是 Typescript 的真实功能吗?
如果是,我该如何配置 Typescript 来执行此操作?
Basically, in my mind, if I named a variable in a function after a native type, it would seem to implicitly be typed as that type, not as any
.
这是完全错误的。打字稿没有这样的功能。如果您不提及类型,Typescript 将简单地将其视为 any
。这与下面的代码中发生的事情相同。
const fn = string => console.log(string)
string
变量是 any
类型。如果你有一个现代的 IDE,当你将鼠标悬停在它上面时,它会显示同样的东西。
要给它一个类型,你必须特别提到一个类型,就像你在后面添加的代码中一样。
const fn = (string:string) => console.log(string)
Is this a real feature in Typescript?
If it is, how do I configure Typescript to do this?
它不是,因此您无法将其配置为正常工作。
最接近您所描述的功能称为上下文打字或类型推断。您可以在 TypeScript's documentation for more details.
中查找
至于您给出的示例,console.log
的标准(节点)定义期望 message
参数为 any
类型。这就是为什么在这种情况下您的 string
参数推断为 any
类型。
// src: node_modules/@types/node/globals.d.ts
interface Console {
// ...
/**
* Prints to `stdout` with newline
*/
log(message?: any, ...optionalParams: any[]): void;
// ...
}
在我无法再访问的 Typescript 项目中,我记得似乎能够执行以下操作:
const fn = string => console.log(string)
刚开始接触Typescript,感觉相当于这样写:
const fn = (string:string) => console.log(string)
基本上,在我看来,如果我以原生类型命名函数中的变量,它似乎隐含地被键入为该类型,而不是 any
。
虽然当时我对 Typescript 还很陌生,所以完全有可能真的发生了其他事情,我只是误解了情况。
现在我正在尝试建立自己的打字稿项目,我想对其进行配置以再次启用该功能。我不确定该怎么做,或者我在想的是不是真正的 Typescript 功能。
这是 Typescript 的真实功能吗?
如果是,我该如何配置 Typescript 来执行此操作?
Basically, in my mind, if I named a variable in a function after a native type, it would seem to implicitly be typed as that type, not as
any
.
这是完全错误的。打字稿没有这样的功能。如果您不提及类型,Typescript 将简单地将其视为 any
。这与下面的代码中发生的事情相同。
const fn = string => console.log(string)
string
变量是 any
类型。如果你有一个现代的 IDE,当你将鼠标悬停在它上面时,它会显示同样的东西。
要给它一个类型,你必须特别提到一个类型,就像你在后面添加的代码中一样。
const fn = (string:string) => console.log(string)
Is this a real feature in Typescript?
If it is, how do I configure Typescript to do this?
它不是,因此您无法将其配置为正常工作。
最接近您所描述的功能称为上下文打字或类型推断。您可以在 TypeScript's documentation for more details.
中查找至于您给出的示例,console.log
的标准(节点)定义期望 message
参数为 any
类型。这就是为什么在这种情况下您的 string
参数推断为 any
类型。
// src: node_modules/@types/node/globals.d.ts
interface Console {
// ...
/**
* Prints to `stdout` with newline
*/
log(message?: any, ...optionalParams: any[]): void;
// ...
}