javascript - 对 JavaScript 对象数组进行排序, typescript 错误

标签 javascript typescript angular-cli

我有两个问题,一个是围绕 Angular-cli 转换时我多次注意到的行为展开的……第二个是排序数组问题,它触发了#1 问题。

我试图排序的数组看起来像这样 - 称之为事物数组:

[{
    label : string,
    primary: boolean
}]

基本上是一个带有“主”字段的标签,该字段本质上是 bool 值,因此值为 true、false 或 null。我想排序,所以 bool TRUE 在前面, bool FALSE 在后面,NULL 在最后。每个分组中的标签均按字母顺序排列。

我只想做一个简单的 JS 数组排序 - 不需要 TS -

this.user.things.sort( function(a, b){ return b.primary > a.primary} );

所以我的编辑器警告我 TS 错误...我忽略了它,因为代码有效。

[ts] 类型“(a: ThingModel, b: ThingModel) => boolean”的参数不可分配给类型“(a: ThingModel, b: ThingModel) => number”的参数。 类型“boolean”不可分配给类型“number”。

我想我将从问题 2 开始,因为在转译时也会出现同样的错误

尽管这是普通的 JS - 我不喜欢在转译时看到波浪线和红色错误。

问题 2:如何使该 TS 兼容?

然后,当我转译时 - 即使我收到错误 - 几秒钟后 - 我收到“编译成功”消息 - 并且网站工作正常。

问题 1:有人可以向我解释一下 - 或者给我指出文档 - 关于转译器以及哪些错误被认为是致命的 - 无启动错误,以及哪些错误会像这个错误一样,在哪里抛出红色错误 -但无论如何都完成编译并且代码可以工作。???这更多的是一个教育问题,而不是解决错误。但我想了解它。

谢谢。

最佳答案

您需要返回数字而不是 bool

  this.user.things.sort(function (a, b) {
            return a.primary < b.primary ? 1 : a.primary > b.primary ? -1 : 0;
        });

现在它不会抛出任何警告或错误。

关于javascript - 对 JavaScript 对象数组进行排序, typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997854/

相关文章:

javascript - 如何正确加粗 Twitter 中的搜索词,JS 中奇怪的正则表达式案例

typescript : "Cannot use namespace as a type"

angular - 尝试通过 ts-patch 在 Angular 项目中使用 ts-nameof

angular - 从 angular 11.2 升级到 12.2 时出错-styles.css-错误 : (0 , _identifier.getUndoPath) 不是函数

javascript - Angular4 + Angular CLI 支持 Javascript AngularJS?

javascript - 获取元素的内容而不在jQuery中转义

javascript - Webpack:Webworker 和 Web 代码之间共享代码的通用 block ?

javascript - 格式化输入字段以将前 4 位数字用句点分隔,接下来的 2 位数字用句点分隔

typescript - 在具有索引类型签名的类上使用省略类型会导致不需要最少的属性

reactjs - 使用 React 和 Typescript 描述柯里化(Currying)状态处理程序的类型