Comments (9)
This is working as intended. First of all, this is just how JavaScript works, it's completely unrelated to TypeScript. Secondly, the documentation makes clear that the values are converted to strings and then sorted, when no comparer is provided:
If omitted, the array elements are converted to strings, then sorted according to each character's Unicode code point value.
Duplicate of #32593.
from typescript.
That's explicitly out of scope for TypeScript. The compiled TypeScript code should behave as-is, just with the types removed. See also: TypeScript Design Goals
from typescript.
Same for Float64Array or BigInt64Array auto deduction, it's type information.
Those are actual runtime types provided by JavaScript. A Float64Array
is not an Array
. That's also why they have different runtime behaviors. They're also limited in what they can do, e.g. a BigInt64Array
can't store floating point number
s.
With "sort-compare" I would need to write custom comparators everytime with only-numbers array.
🤷♂️ You have to deal with the quirks of the runtime you're dealing with.
from typescript.
@MartinJohns wanted to say that new Float64Array([16, 1, 0, 9, 100]).sort() works correctly
from typescript.
Yes, different types can behave differently. As documented, when omitting the comparer for Float64Array
s sort method the values are sorted by their numeric value:
This method has the same algorithm as Array.prototype.sort(), except that it sorts the values numerically instead of as strings by default.
[..]
If omitted, the typed array elements are sorted according to numeric value.
But again, that's just how JavaScript works and completely unrelated to TypeScript. TypeScript won't change how your code is run.
from typescript.
@MartinJohns
Ok, thnx.
I think it's could be good to transpile to Float64Array or BigInt64Array, like C++ do it with auto deduction.
from typescript.
- But isn't JS does not support generics, but TS does?
- So I guess this is good field to improve in TS, because sorting numbers in lex order is frustrating.
from typescript.
- But isn't JS does not support generics, but TS does?
Generics only exist at compile time, they're just type information. After compilation anything generic related is completely gone. There's no runtime behavior.
So I guess this is good field to improve in TS, because sorting numbers in lex order is frustrating.
Again, this is explicitly out of scope. See the document I linked. Just provide a comparer if you want numerical sorting for arrays.
You might also want this ESlint rule: require-array-sort-compare
from typescript.
Generics only exist at compile time, they're just type information. After compilation anything generic related is completely gone. There's no runtime behavior.
Same for Float64Array or BigInt64Array auto deduction, it's type information.
Good rule, but I want to be my code DRY as possible, which could be achieved with Float64Array/BigInt64Array types.
With "sort-compare" I would need to write custom comparators everytime with only-numbers array.
from typescript.
Related Issues (20)
- `satisfies` does not work on a variable called `type`
- API: Can't seem to extract JsDoc tags from declaration HOT 2
- Add option to detect and strip internal exports
- false error on generic type alias parameters HOT 5
- Unable to declare an interface that extends `Record<string, nonAnyType>` with additional support functions. HOT 7
- Add support for generic types on a index accessor HOT 2
- `getTextOfJSDocComment` is stripping `#` from JSDoc comment HOT 1
- Enable `allowJs` with `isolatedDeclarations` HOT 1
- JSDoc comment string with the keyword "@private" before import statement in JS file result in cryptic error TS1191 during compilation HOT 2
- `NoInfer` isn't erased and breaks type narrowing HOT 3
- function with overloading incorrectly defines generic variables HOT 3
- TS2590: Expression produces a union type that is too complex to represent, with simple file using Tuples HOT 6
- Debug Failure in transformClassLike in "ghost" after #56955 HOT 1
- no error when re-exporting wildcard import from module and redefining a name from it HOT 1
- TypeScript Error only on big type only when assigned to a variable HOT 3
- Allow explicit declaration of an object property to be omitted when the property is typed as `undefined` HOT 5
- generic parameter is not narrowed down correctly in extends clause when using keyof operator HOT 4
- OOM typescript, mac m1+. HOT 1
- [NewErrors] 5.5.0-dev.20240421 vs 5.4.5 HOT 63
- [ServerErrors][TypeScript] 5.5.0-dev.20240421 HOT 14
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript.