我来自面向对象的语言,比如Java,我试图将.jsx模块转换为.tsx来使用类型。
我不得不说这很容易和直截了当但我不喜欢以下内容:
let methodName = 'GET';
这是我的方法中的变量声明。编译器很好,我没有分配类型,但来自java我不喜欢!我想得到一个错误“变量methodName的类型是未定义的”,所以我被迫以这种方式编写它:
let methodName:string = 'GET';
对于我的方法也是如此,对于打字稿,以下内容绝对正常:
handleButtonClick = evt => {
}
但它根本不好,我应该被迫做这样的事情:
handleButtonClick = (evt:React.MouseEvent):void => {
}
是否可以通过设置一些选项来实现这一目标?
在文档的compiler options部分,你会发现--noImplicitAny
选项告诉TypeScript不允许隐式any
。
但请注意,您的第一个示例不会使mehodName
隐含any
:
let methodName = 'GET';
TypeScript从您分配的内容中推断出methodName
的类型,并尝试分配字符串以外的其他内容将是一个错误。 type inference文档详细介绍了这一点。很多时候,您不需要显式输入内容,因为可以推断出类型。代码仍然是类型安全的。
这将隐含地使methodName
类型为any
:
export let methodName;
使用--noImplicitAny
,这是一个错误。没有它,隐式类型any
用于导出的变量。