<div dir="ltr">Any name would do, I'm rather interested in the proposal itself, and its ergonomics/logic ;-)<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 7, 2020 at 10:11 PM Scott Rudiger <<a href="mailto:scottrudiger@gmail.com">scottrudiger@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">`StructuredArray` or `StructArray` for short? Just throwing it out there.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 7, 2020, 1:08 PM Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com" target="_blank">andrea.giammarchi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">well, this proposal has nothing to do with Typed Arrays, as these are all fixed size indeed ... scratch the TypedArray name, and use ArrayKind instead, any better outcome?<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 7, 2020 at 7:51 PM Jordan Harband <<a href="mailto:ljharb@gmail.com" rel="noreferrer" target="_blank">ljharb@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">the "type" in Typed Arrays refers to the bit size in memory; being able to pass an arbitrary value seems like it would require implementations to calculate the precise (not just the maximum) memory size a single item requires.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 7, 2020 at 6:33 AM Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com" rel="noreferrer" target="_blank">andrea.giammarchi@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>As more and more often devs are shifting into TS, or would like to have dynamic typed arrays without a fixed length, and as v8 and likely other engines too optimize a lot for same-kind arrays, I wonder what people here think about this `TypedArray` rough proposal:<br></div><div><br></div><div># Signature:<br><br>```js<br>new TypedArray(<br>  type,   // either a "type" to infer, or a shape, or a Class<br>  length  // optional: if defined it's fixed size<br>);<br>```<br><br><br>## About the `type`<br><br>  * if the inferred type is `object`:<br>    * if the object is `null`, throw new InvalidType<br>    * if the object is a literal, or its `__proto__` is either `null` or `Object.prototype, enforce own properties and respective types<br>    * if the object is not literal, fallback to object Class (`/./` is `RegExp`, `() => {}` is `Function`, etc)<br>  * if the inferred `type` is `function`, fallback to Class<br>  * if the inferred `type` is `Class`, ensure each entry is an instance of such class, or throw InvalidType<br>  * in every other case, make a _typed_ collection of `number`, `string`, `boolean`, or `symbol`<br><br><br>## About the `length`<br><br>  * if provided, the collection has a fixed, immutable, length, and each initial entry a default value<br><br><br># Use Cases:<br><br>```js<br>const numbers = new TypedArray(0, 5);<br>// creates [0, 0, 0, 0, 0]<br>// numbers length is immutable<br>// numbers accepts only typeof number<br>// out of bound entries throw<br><br>let numbers = new TypedArray(0);<br>// numbers length is dynamic<br>// numbers accepts only typeof number<br>// out of bound entries throw<br><br>const shapes = new TypedArray({name: '', age: 0}, 3);<br>// creates [{name: '', age: 0}, {name: '', age: 0}, {name: '', age: 0}]<br>// shapes length is immutable<br>// shapes accepts only objects with `name` and `age` and respective types<br>// out of bound entries throw<br><br>let shapes = new TypedArray({lat: 0, long: 0});<br>// shapes length is dynamic<br>// shapes accepts only objects with `lat` and `long` and respective types<br>// out of bound entries throw<br><br>const classes = new TypedArray(HTMLElement, 2);<br>// creates [Object.create(HTMLElement.prototype), Object.create(HTMLElement.prototype)]<br>// classes length is immutable<br>// classes accepts only instances of HTMLElement<br>// out of bound entries throw<br><br>let classes = new TypedArray(HTMLElement);<br>// classes length is dynamic<br>// classes accepts only instances of HTMLElement<br>// out of bound entries throw<br><br>// more options<br>let strings = new TypedArray('');<br>let booleans = new TypedArray(true);<br>let functions = new TypedArray(Function);<br>let coords = new TypedArray({lat: 0, long: 0});<br>```</div><div><br></div><div>Thanks in advance for eventual thoughts on this 👋</div></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" rel="noreferrer" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
</blockquote></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" rel="noreferrer" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
</blockquote></div>