我试图将某些js转换为ts并在 canSave方法中出错。我的JavaScript代码是,
Type '() => void' is not assignable to type '() => boolean'

当我试图将其转换为TypeScript时。我在命令提示符下获得了Operator '!=' cannot be applied to types 'number' and 'Category[]'
和{{1}}。我的错误是什么,我现在能做些什么,有人可以澄清一下。
答案 0 :(得分:2)
基本上,你会遇到TypeScript(顾名思义!)拥有比JavaScript更严格的类型系统这一事实,因此后者允许的很多东西都会导致TypeScript编译器对你大喊大叫。
这里有两个问题:
scope.canSave
被定义为没有返回布尔值的参数的函数。 TypeScript将其表示为() => boolean
- 如果它将数字作为参数,则它看起来像(number) => boolean
,依此类推。另一方面,您的新功能定义根本不会返回任何内容。 TypeScript将此类函数表示为() => void
- 它可以告诉它不匹配<{1}} 应该的内容,因此它会为您提供错误消息。< / LI>
scope.canSave
被定义为一个数字,但scope.category.orderNumber
被定义为scope.list
个对象的数组。这两种类型不具有可比性(您无法将对象数组转换为数字),因此当您尝试在其上使用Category
运算符时,TypeScript会出错。如此有效,TypeScript正在完成它在此设计的目的 - 它捕获了两个可能在纯JavaScript中未被注意的代码问题。