gpt4 book ai didi

javascript - 将 JavaScript 转换为 TypeScript 时出错

转载 作者:行者123 更新时间:2023-12-02 14:26:29 25 4
gpt4 key购买 nike

我正在尝试将一些 js 转换为 ts,但在 canSave 方法 中出现错误。我的 JavaScript 代码是,

            scope.canSave = function () {
if (scope.category.orderNumber != scope.list) {
!_this.orderNumberAlreadyExist(scope.list, scope.category);
}
};

当我尝试将其转换为 TypeScript 时。我收到 Type '() => void' is not assignable to type '() => boolean'Operator '!=' can be apply to types 'number' 和 'Category命令提示符中的 []'。我犯了什么错误,现在我能做什么,有人可以澄清我吗?

最佳答案

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

您这里有两个问题:

  • 在代码中的某个位置,scope.canSave 被定义为一个不带参数且返回 bool 值的函数。 TypeScript 将其表示为 () => boolean - 如果它采用数字作为参数,它看起来会类似于 (number) => boolean,依此类推。另一方面,您的新函数定义根本不返回任何内容。 TypeScript 将这种类型的函数表示为 () => void - 它可以告诉它与 scope.canSave 应该是什么匹配。 ,因此它会给您一条错误消息。
  • scope.category.orderNumber 被定义为数字,而 scope.list 被定义为 Category 对象的数组。这两种类型不具有可比性(您无法将对象数组转换为数字),因此当您尝试对它们使用 != 运算符时,TypeScript 会给出错误。

非常有效,TypeScript 正在做它设计的事情 - 它发现了代码中的两个问题,而这些问题在普通 JavaScript 中可能会被忽视。

关于javascript - 将 JavaScript 转换为 TypeScript 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38202208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com