如何在打字稿中使用 toSorted() 方法

Dev*_*om7 27 sorting typescript

当我尝试在打字稿中使用toSorted方法时,如下所示:

const x = [1,2];
const y = x.toSorted();
Run Code Online (Sandbox Code Playgroud)

我收到此 ts 错误:

类型“number[]”上不存在属性“toSorted”。ts(2339)

toReverse () 和toSplice () 方法也会发生这种情况

Riy*_*enz 14

要解决此问题,您需要更新您的tsconfig.json文件。

找到该compilerOptions部分并确保该compilerOptions值包含ESNext.Array。它应该看起来像这样:

{
  "compilerOptions": {
    "lib": ["ESNext.Array", "DOM", "ESNext", "etc..."]
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

找到您的 tsconfig 文件并将“ES2023.Array”添加到“lib”值。我今天遇到了类似的问题(对于“toSpliced”),解决方案对我有用

  • 通过额外的支持信息可以改进您的答案。请[编辑]添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (2认同)

Nik*_*ita 5

toSorted是一个新功能Array.prototype.toSorted(),它存在于ES2023中https://www.sonarsource.com/blog/es2023-new-array-copying-methods-javascript/

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted#browser_compatibility

这个功能确实很新鲜,并不是每个浏览器和代码编辑器都支持。在这里你可以找到一个例子(JS)https://playcode.io/1521165 或者你可以使用最新版本的TS(今天5.2.0-dev.20230701)

您可以将 TypedArray 的方法与 Array 对象一起使用。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray

const x = new Uint8Array([1,2]);
const y = x.toSorted();
Run Code Online (Sandbox Code Playgroud)

或者您可以使用标准排序方法

const numbersArray = [45, 2, 6, 207];
numbersArray.sort((a: number, b: number) => {
  return a - b;
});
Run Code Online (Sandbox Code Playgroud)

演示https://stackblitz.com/edit/typescript-d4dfdn?file=index.ts

  • 小心,在示例中,您已经分配了对排序结果的引用,但“排序”实际上是“就位”,因此原始数组也已排序。这是“sort”和“toSorted”之间的主要区别,您的示例似乎有点误导,所以我只想指出这一点。 (6认同)