Created by: tristanlins
The typescript-fetch use Date
typed properties for date and date-time fields.
The generated interface and factory function looks like this:
export interface TheModel {
/**
*
* @type {Date}
* @memberof TheModel
*/
mandatoryDate: Date;
/**
*
* @type {Date}
* @memberof TheModel
*/
optionalDate?: Date;
}
export function TheModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TheModel {
if ((json === undefined) || (json === null)) {
return json;
}
return {
'mandatoryDate': (new Date(json['updateDateTime'])),
'optionalDate': !exists(json, 'publicationDateTime') ? undefined : (new Date(json['publicationDateTime'])),
};
}
When changing the type mapping with --type-mappings=date=string,DateTime=string
only the interface changes:
export interface TheModel {
/**
*
* @type {string}
* @memberof TheModel
*/
mandatoryDate: string;
/**
*
* @type {string}
* @memberof TheModel
*/
optionalDate?: string;
}
export function TheModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TheModel {
if ((json === undefined) || (json === null)) {
return json;
}
return {
'mandatoryDate': (new Date(json['updateDateTime'])),
'optionalDate': !exists(json, 'publicationDateTime') ? undefined : (new Date(json['publicationDateTime'])),
};
}
But the factory function still converts all values to dates. This is wrong and results in a typescript compile error.
With the change, the generated code looks like this (when remap date=string,DateTime=string
):
export interface TheModel {
/**
*
* @type {string}
* @memberof TheModel
*/
mandatoryDate: string;
/**
*
* @type {string}
* @memberof TheModel
*/
optionalDate?: string;
}
export function TheModelFromJSONTyped(json: any, ignoreDiscriminator: boolean): TheModel {
if ((json === undefined) || (json === null)) {
return json;
}
return {
'mandatoryDate': json['updateDateTime'],
'optionalDate': !exists(json, 'publicationDateTime') ? undefined : json['publicationDateTime'],
};
}
PR checklist
-
Read the contribution guidelines. -
Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community. -
Run the following to build the project and update samples: ./mvnw clean package ./bin/generate-samples.sh ./bin/utils/export_docs_generators.sh
./bin/generate-samples.sh bin/configs/java*
. For Windows users, please run the script in Git BASH. -
File the PR against the correct branch: master
(5.3.0),6.0.x
-
If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.
I just don't know how to cover that in the UnitTests. Which is why I didn't add any new tests :roll_eyes:
It might make sense to set CodegenParameter#isDate
& #isDateTime
, CodegenProperty#isDate
& #isDateTime
and CodegenModel#isDate
& #isDateTime
to false instead. But that would be a more serious intervention.
@TiFu @taxpon @sebastianhaas @kenisteward @Vrolijkx @macjohnny @topce @akehir @petejohansonxo @amakhrov