javascript - 对javascript对象数组进行排序,打字稿错误
问题描述
我有两个问题,一个是围绕我在 angular-cli transpiles 时注意到的几次行为......第二个是排序数组问题,它触发了 #1 问题。
我试图排序的数组看起来像这样 - 称之为事物数组:
[{
label : string,
primary: boolean
}]
基本上是一个带有“主要”字段的标签,该字段本质上是布尔值,因此值为真、假或空。我想排序,所以布尔值 TRUE 排在第一位,布尔值 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:有人可以向我解释 - 或指向我的文档 - 关于转译器以及哪些错误被认为是致命的 - 无启动错误,以及哪些错误会像这个错误一样,它在哪里抛出一个红色错误 - 但完成编译无论如何,代码有效。???这更像是一个教育问题,而不是解决一个错误。但我想了解它。
谢谢。
解决方案
您需要返回number
不是boolean
值
this.user.things.sort(function (a, b) {
return a.primary < b.primary ? 1 : a.primary > b.primary ? -1 : 0;
});
现在它不会抛出任何警告或错误。
推荐阅读
- amazon-web-services - AWS Mutual TLS 被禁止 - 403
- json - 对 FastAPI 的 Pydantic Schema 的 ElasticSearch JSON 查询
- r - 自动化编写 Word 文档并使用 R 发送电子邮件
- python - 从内部包调用函数
- javascript - l-blank" data-gramm="false" contenteditable="true" data-placeholder="你的标题...">
- r - 具有 raw=TRUE 的 Poly() 提供不同的结果,然后 I()
- r - 映射列表列并提取第一个列表项
- c# - 如何在 C# 中通过 DataGridView 将 DateTime 值存储到数据库
- javascript - 使用选项在 Nextjs 中通过 React-select 更改 URL
- java - Webassembly wrap 指令:i % 2^32 的含义