variant
Version:
Variant types (a.k.a. Discriminated Unions) in TypeScript
37 lines • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaterAnimal = exports.AmphibiousAnimal = exports.cerberus2 = exports.cerberus = exports.Animal2 = exports.TaggedAnimal = exports.Animal = void 0;
const __1 = require("..");
const variant_1 = require("../variant");
exports.Animal = __1.variantList([
__1.variant('dog', __1.fields()),
__1.variant('cat', __1.fields()),
__1.variant('snake', (name, patternName) => ({
name,
pattern: patternName !== null && patternName !== void 0 ? patternName : 'striped',
})),
]);
const tag = variant_1.variantFactory('__typename');
exports.TaggedAnimal = __1.variantList([
tag('dog', __1.fields()),
tag('cat', __1.fields()),
tag('snake', (name, patternName) => ({
name,
pattern: patternName !== null && patternName !== void 0 ? patternName : 'striped',
})),
]);
exports.Animal2 = variant_1.variantModule({
dog: __1.fields(),
cat: __1.fields(),
snake: (name, pattern = 'striped') => ({ name, pattern }),
bird: {},
});
exports.cerberus = exports.Animal.dog({ name: 'Cerberus' });
exports.cerberus2 = exports.Animal2.dog({ name: 'Cerberus' });
exports.AmphibiousAnimal = __1.variantList([
__1.variant('frog', __1.fields()),
]);
exports.WaterAnimal = __1.variantList([
__1.variant('goldfish', __1.fields()),
]);
//# sourceMappingURL=animal.js.map