You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Teodor Kostov (Jira)" <ji...@apache.org> on 2022/06/05 13:48:00 UTC
[jira] [Created] (ARROW-16750) [JS] Strong typing for builders
Teodor Kostov created ARROW-16750:
-------------------------------------
Summary: [JS] Strong typing for builders
Key: ARROW-16750
URL: https://issues.apache.org/jira/browse/ARROW-16750
Project: Apache Arrow
Issue Type: Bug
Components: JavaScript
Affects Versions: 9.0.0
Reporter: Teodor Kostov
I've been obfuscating the builder types in my application to clear the editor issue highlights. However, it seems that the root cause is the way the {{StructRowProxy}} type is [created|https://github.com/apache/arrow/blob/25e0dd488ab60417f8f453f648e6ecfeb058f01e/js/src/row/struct.ts#L28]. It seems that instead of or {{|}} the type is created with {{&}}, and this causes the editor to complain.
Let's look at an example.
{code:javascript}
interface ValueType extends arrow.TypeMap {
time: arrow.TimestampMillisecond,
value: arrow.Float64,
}
type Value = {
time: number,
value: number,
}
const children: (arrow.Field<arrow.DateMillisecond> | arrow.Field<arrow.Float64>)[] = [
new arrow.Field('time', new arrow.TimestampMillisecond()),
new arrow.Field('value', new arrow.Float64()),
]
const valueDataType: arrow.Struct<any> = new arrow.Struct<ValueType>(children) // forcing the Struct type here - without it the error message is the same and will just show <any> instead of <ValueType>
const builder: arrow.StructBuilder<ValueType, null | undefined> = arrow.makeBuilder({ type: valueDataType, nullValues: [null, undefined] })
...
const add(value: Value) => builder.append(value)
/*
Argument of type 'Value' is not assignable to parameter of type 'StructRowProxy<ValueType>'.
Type 'Value' is missing the following properties from type 'StructRow<ValueType>': toArray, toJSON, [kRowIndex], [kParent], [Symbol.iterator]
*/
{code}
To prevent editor error highlights, I have to obfuscate the builder type.
{code:javascript}
const builder: arrow.Builder = arrow.makeBuilder({ type: valueDataType, nullValues: [null, undefined] })
{code}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)