-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Why?
People need to know the format of the formula result to visulize the result.
Example 1:
DATE(2000, 1, 1)
results in
36526
in General format1/1/2000
in Date format.
Internally, the value is being stored as a number36526
(or so-called excel serial number), but there is a way to store and propagate the type of the value when evaluating the formulaDATE(2000, 1, 1)
. Thus, we can tell users that the result is aDate
.
Example 2:
DATE(CONCAT(200, 0), 1, 1)
returns a date value/ serial number.
CONCAT(200, 0)
always return a string (or error), DATE(CONCAT(200, 0), 1, 1)
always return a date (or error).
Example 3:
CONCATE(DATE(2000, 1, 1))
returns a string.
Questions
Do we need to propagate the type internally?
It is unnecessary. We only need to know the out-most function name, since the out-most function determines the result type.
How many types are there?
So far, I discovered only Date
and General
. General
can be JavaScript Number, String, Boolean.
How about some formulas returning a cell reference, range reference, array? Should we tell the user what we returning?
How about a simple reference =A1
, where A1 has a formula type Date
?
We should know the type of the given cell, but how?
Should we provide a format function in the result wrapper, which is basically SSF.format
but only takes a format string?
Do we use a pure JS object to wrap the formula result, or a class
?
class
may use more memory. Generating more unnecessary data → Invoke Garbage Collector more frequently.
More questions?
Proposing
Currently I don't have a clear idea of the implementation, we must think of all the questions above carefully.
Instead of returning the value directly, we return an object that wraps the result and add information about the type, e.g., Date
, or Excel Serial Number
.