diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelEnum.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelEnum.mustache
index f3ded52fdb593ae6944f921d472263c0991cc19b..0db1d9a5a80574ff161ed18e7664311093a8ff3c 100644
--- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelEnum.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelEnum.mustache
@@ -12,6 +12,10 @@ export enum {{classname}} {
 }
 
 export function {{classname}}FromJSON(json: any): {{classname}} {
+    return {{classname}}FromJSONTyped(json, false);
+}
+
+export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
     return json as {{classname}};
 }
 
diff --git a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
index 89d13244397ae30b61fd36c3113ab71101d8f47a..0767831e14d5211f2cb7dec8a5422e83b0310205 100644
--- a/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-fetch/modelGeneric.mustache
@@ -4,11 +4,20 @@ import {
     {{#imports}}
     {{{.}}},
     {{.}}FromJSON,
+    {{.}}FromJSONTyped,
     {{.}}ToJSON,
     {{/imports}}
 } from './';
 
 {{/hasImports}}
+{{#discriminator}}
+import {
+{{#discriminator.mappedModels}}
+     {{modelName}}FromJSONTyped
+{{/discriminator.mappedModels}}
+} from './';
+
+{{/discriminator}}
 /**
  * {{{description}}}
  * @export
@@ -29,8 +38,25 @@ export interface {{classname}} {{#parent}}extends {{{parent}}} {{/parent}}{
 }
 
 export function {{classname}}FromJSON(json: any): {{classname}} {
+    return {{classname}}FromJSONTyped(json, false);
+}
+
+export function {{classname}}FromJSONTyped(json: any, ignoreDiscriminator: boolean): {{classname}} {
     {{#hasVars}}
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
+{{#discriminator}}
+    if (!ignoreDiscriminator) {
+{{#discriminator.mappedModels}}
+        if (json['{{discriminator.propertyName}}'] === '{{modelName}}') {
+            return {{modelName}}FromJSONTyped(json, true);
+        }
+{{/discriminator.mappedModels}}
+    }
+{{/discriminator}}
     return {
+        {{#parent}}...{{{parent}}}FromJSONTyped(json, ignoreDiscriminator),{{/parent}}
         {{#additionalPropertiesType}}
             ...json,
         {{/additionalPropertiesType}}
@@ -79,7 +105,11 @@ export function {{classname}}ToJSON(value?: {{classname}}): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        {{#parent}}...{{{parent}}}ToJSON(value),{{/parent}}
         {{#additionalPropertiesType}}
             ...value,
         {{/additionalPropertiesType}}
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/default/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/default/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/default/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/default/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/es6-target/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/multiple-parameters/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-interfaces/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Category.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Category.ts
index f8809dccbea33fe200771c34aaa1662794b5c3c2..0541f013a25651c7589e71920fbd784029a7d88c 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Category.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Category.ts
@@ -33,7 +33,15 @@ export interface Category {
 }
 
 export function CategoryFromJSON(json: any): Category {
+    return CategoryFromJSONTyped(json, false);
+}
+
+export function CategoryFromJSONTyped(json: any, ignoreDiscriminator: boolean): Category {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function CategoryToJSON(value?: Category): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/ModelApiResponse.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/ModelApiResponse.ts
index 8b8e2c45fecdce6853585a30d732a498df131b8b..a9f1ef2fa241fe908aa9ae89dfc9a0660683b536 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/ModelApiResponse.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/ModelApiResponse.ts
@@ -39,7 +39,15 @@ export interface ModelApiResponse {
 }
 
 export function ModelApiResponseFromJSON(json: any): ModelApiResponse {
+    return ModelApiResponseFromJSONTyped(json, false);
+}
+
+export function ModelApiResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ModelApiResponse {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'code': !exists(json, 'code') ? undefined : json['code'],
         'type': !exists(json, 'type') ? undefined : json['type'],
         'message': !exists(json, 'message') ? undefined : json['message'],
@@ -50,7 +58,11 @@ export function ModelApiResponseToJSON(value?: ModelApiResponse): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'code': value.code,
         'type': value.type,
         'message': value.message,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts
index 6ce0496794f6c4b35fad0ac440fed3adb75f5c53..b9d32f387afbe2f32d8afb14a84ec7488cc62564 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Order.ts
@@ -57,7 +57,15 @@ export interface Order {
 }
 
 export function OrderFromJSON(json: any): Order {
+    return OrderFromJSONTyped(json, false);
+}
+
+export function OrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): Order {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'petId': !exists(json, 'petId') ? undefined : json['petId'],
         'quantity': !exists(json, 'quantity') ? undefined : json['quantity'],
@@ -71,7 +79,11 @@ export function OrderToJSON(value?: Order): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'petId': value.petId,
         'quantity': value.quantity,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts
index 770f991b89d90d5b19d6f5062b2332b777e4ef2b..d0cf8f55c2c42a6120bc0491b4ef6e97d5cc6825 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Pet.ts
@@ -15,9 +15,11 @@ import { exists, mapValues } from '../runtime';
 import {
     Category,
     CategoryFromJSON,
+    CategoryFromJSONTyped,
     CategoryToJSON,
     Tag,
     TagFromJSON,
+    TagFromJSONTyped,
     TagToJSON,
 } from './';
 
@@ -66,7 +68,15 @@ export interface Pet {
 }
 
 export function PetFromJSON(json: any): Pet {
+    return PetFromJSONTyped(json, false);
+}
+
+export function PetFromJSONTyped(json: any, ignoreDiscriminator: boolean): Pet {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'category': !exists(json, 'category') ? undefined : CategoryFromJSON(json['category']),
         'name': json['name'],
@@ -80,7 +90,11 @@ export function PetToJSON(value?: Pet): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'category': CategoryToJSON(value.category),
         'name': value.name,
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Tag.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Tag.ts
index 7c8098f6dc018943d99871d8c3c0fad0f58d28e1..a095d07d0c058c7b77d55ebb29f3f45c435b420d 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Tag.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/Tag.ts
@@ -33,7 +33,15 @@ export interface Tag {
 }
 
 export function TagFromJSON(json: any): Tag {
+    return TagFromJSONTyped(json, false);
+}
+
+export function TagFromJSONTyped(json: any, ignoreDiscriminator: boolean): Tag {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'name': !exists(json, 'name') ? undefined : json['name'],
     };
@@ -43,7 +51,11 @@ export function TagToJSON(value?: Tag): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'name': value.name,
     };
diff --git a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/User.ts b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/User.ts
index fd7430063f1c2134c5021a51ef60e8c8a33db895..0649d0e1229c99c6bcdacc3b1371324ccb8a26e5 100644
--- a/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/User.ts
+++ b/samples/client/petstore/typescript-fetch/builds/with-npm-version/src/models/User.ts
@@ -69,7 +69,15 @@ export interface User {
 }
 
 export function UserFromJSON(json: any): User {
+    return UserFromJSONTyped(json, false);
+}
+
+export function UserFromJSONTyped(json: any, ignoreDiscriminator: boolean): User {
+    if ((json === undefined) || (json === null)) {
+        return json;
+    }
     return {
+        
         'id': !exists(json, 'id') ? undefined : json['id'],
         'username': !exists(json, 'username') ? undefined : json['username'],
         'firstName': !exists(json, 'firstName') ? undefined : json['firstName'],
@@ -85,7 +93,11 @@ export function UserToJSON(value?: User): any {
     if (value === undefined) {
         return undefined;
     }
+    if (value === null) {
+        return null;
+    }
     return {
+        
         'id': value.id,
         'username': value.username,
         'firstName': value.firstName,