将JavaScript转换为TypeScript时出错

将JavaScript转换为TypeScript时出错,javascript,typescript,Javascript,Typescript,我试图将一些js转换为ts,但在canSave方法中出错 scope.canSave=函数(){ if(scope.category.orderNumber!=scope.list){ !\u this.orderNumberReadyExist(scope.list,scope.category); } }; 基本上,您会遇到这样一个事实:TypeScript(顾名思义!)的类型系统比JavaScript严格得多,因此后者中允许的许多事情会导致TypeScript编译器对您大喊大叫 这里有两

我试图将一些js转换为ts,但在canSave方法中出错

scope.canSave=函数(){
if(scope.category.orderNumber!=scope.list){
!\u this.orderNumberReadyExist(scope.list,scope.category);
}
};

基本上,您会遇到这样一个事实:TypeScript(顾名思义!)的类型系统比JavaScript严格得多,因此后者中允许的许多事情会导致TypeScript编译器对您大喊大叫

这里有两个问题:

  • 在代码中的某个地方,
    scope.canSave
    被定义为一个没有返回布尔值的参数的函数。TypeScript将其表示为
    ()=>布尔值
    ——如果它将一个数字作为参数,它看起来像
    (数字)=>布尔值
    ,依此类推。另一方面,您的新函数定义根本不返回任何内容。TypeScript将此类型的函数表示为
    ()=>void
    -它可以判断这与
    作用域不匹配。canSave
    应该是什么,因此它会向您提供一条错误消息
  • scope.category.orderNumber
    被定义为一个数字,但是
    scope.list
    被定义为一个
    category
    对象的数组。这两种类型不可比较(您无法将对象数组转换为数字),因此当您尝试使用
    时,TypeScript会给您一个错误=他们的操作员

如此有效,TypeScript正是它在这里设计的功能——它抓住了您的代码中两个在普通JavaScript中可能没有注意到的问题。

基本上,您遇到了这样一个事实:TypeScript(顾名思义!)的类型系统比JavaScript严格得多,因此,后者中允许的许多事情会导致TypeScript编译器对您大喊大叫

这里有两个问题:

  • 在代码中的某个地方,
    scope.canSave
    被定义为一个没有返回布尔值的参数的函数。TypeScript将其表示为
    ()=>布尔值
    ——如果它将一个数字作为参数,它看起来像
    (数字)=>布尔值
    ,依此类推。另一方面,您的新函数定义根本不返回任何内容。TypeScript将此类型的函数表示为
    ()=>void
    -它可以判断这与
    作用域不匹配。canSave
    应该是什么,因此它会向您提供一条错误消息
  • scope.category.orderNumber
    被定义为一个数字,但是
    scope.list
    被定义为一个
    category
    对象的数组。这两种类型不可比较(您无法将对象数组转换为数字),因此当您尝试使用
    时,TypeScript会给您一个错误=他们的操作员

TypeScript非常有效,正是它在这里设计的目的——它抓住了在普通JavaScript中可能没有注意到的代码的两个问题。

“将资源从源目录复制到目标目录,并可能对其进行处理。”这个命令应该如何将JavaScript转换为TypeScript?我将处理两个命令来将js转换为ts,它们是上面的一个和(gradlew devResource)。以下是转换的步骤。我在第一个命令本身中得到了上述错误!!为了帮助您,我们需要知道如何声明类别和列表(在typescript中)。请张贴您的完整代码,以及您获得errors@iberbeu,现在我编辑了我的代码,你可以检查你想在这里做什么?您是否有将javascript转换为typescript的自动工具?它如何知道类型
类别
?为什么要从js转换为ts呢?(正如您在对回答的评论中所写:“我不想更改我的JavaScript代码”,那么使用ts代码有什么意义?“将资源从源目录复制到目标目录,并可能对其进行处理。”该命令如何将JavaScript转换为TypeScript?我将处理两个命令以将js转换为ts,它们是上面的一个和(gradlew devResource)。以下是转换的步骤。我在第一个命令本身中得到了上述错误!!为了帮助您,我们需要知道如何声明类别和列表(在typescript中)。请张贴您的完整代码,以及您获得errors@iberbeu,现在我编辑了我的代码,你可以检查你想在这里做什么?您是否有将javascript转换为typescript的自动工具?它如何知道类型
类别
?为什么要从js转换为ts呢?(正如您在回复中所写:“我不想更改我的JavaScript代码”,那么使用ts代码有什么意义呢?)谢谢joe,您正在告诉我错误的原因,但我需要解决方案。我不想更改我的JavaScript代码,因为代码中使用的逻辑对我的应用程序很重要。因此,我需要将其转换为TypeScript。@贝基:为了让我能够给出一个明确的解决方案,您需要在问题中添加您最初定义变量/类型的代码部分(换句话说,您最初设置
范围的代码部分);这就是必须进行修复的地方。谢谢joe,你告诉我错误的原因,但我需要解决方案,伙计。我不想更改我的JavaScript代码,因为代码中使用的逻辑对我的应用程序很重要。所以我需要将其转换为TypeScript。@贝基:为了让我能够给出一个明确的解决方案,您需要在代码中添加您最初定义变量/类型的部分(换句话说,您初始化的部分)