Skip to content

Commit 955d882

Browse files
committed
fix(gen): properly handle nullables
1 parent 055c139 commit 955d882

File tree

4 files changed

+9
-5
lines changed

4 files changed

+9
-5
lines changed

lib/gen/typescript.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ export function generateTypeScript (schema) {
178178
fieldValidators.push(` (${inCheck} (${fieldDefn.nullable ? `value.${fieldName} === null || ` : ''}(Array.isArray(value.${fieldName}) && value.${fieldName}.every(${elementType}.is${elementType}))))`)
179179
}
180180
} else {
181-
fieldValidators.push(` (${inCheck} ${fieldDefn.nullable ? `value.${fieldName} === null || ` : ''}(${fieldType}.is${fieldType}(value.${fieldName})))`)
181+
if (fieldDefn.nullable) {
182+
fieldValidators.push(` (${inCheck} (value.${fieldName} === null || ${fieldType}.is${fieldType}(value.${fieldName})))`)
183+
} else {
184+
fieldValidators.push(` (${inCheck} (${fieldType}.is${fieldType}(value.${fieldName})))`)
185+
}
182186
}
183187
}
184188

test/fixtures/gen/optionals.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,9 @@ export namespace Profile {
149149
const keyCount = Object.keys(value).length
150150
return keyCount >= 2 && keyCount <= 4 &&
151151
('userId' in value && (KindString.isKindString(value.userId))) &&
152-
(!('bio' in value) || value.bio === null || (KindString.isKindString(value.bio))) &&
152+
(!('bio' in value) || (value.bio === null || KindString.isKindString(value.bio))) &&
153153
(!('avatar' in value) || (KindString.isKindString(value.avatar))) &&
154-
('lastLogin' in value && value.lastLogin === null || (KindInt.isKindInt(value.lastLogin)))
154+
('lastLogin' in value && (value.lastLogin === null || KindInt.isKindInt(value.lastLogin)))
155155
}
156156
}
157157

test/fixtures/gen/unions-kinded.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ export namespace Settings {
240240
const keyCount = Object.keys(value).length
241241
return keyCount === 2 &&
242242
('name' in value && (KindString.isKindString(value.name))) &&
243-
('config' in value && value.config === null || (ConfigValue.isConfigValue(value.config)))
243+
('config' in value && (value.config === null || ConfigValue.isConfigValue(value.config)))
244244
}
245245
}
246246
```

types/lib/gen/typescript.d.ts.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)