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