• Stars
    star
    174
  • Rank 219,104 (Top 5 %)
  • Language
    JavaScript
  • License
    ISC License
  • Created over 7 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Data classes for TypeScript & JavaScript

dataclass

npm install dataclass

Syntax sugar that leverages the power of available type systems in TypeScript and JavaScript to provide an effortless way for defining value objects that are immutable and persistent.

Read full docs on the website.

import { Data } from "dataclass";

class User extends Data {
  name: string = "Anon";
  age: number = 25;
}

let user = User.create({ name: "Liza", age: 23 });
// > User { name: "Liza", age: 23 }

let updated = user.copy({ name: "Ann" });
// > User { name: "Ann", age: 23 }

let isEqual = user.equals(updated);
// > false

Prior Art

The implemented concept is heavily inspired by Scala and Kotlin. Both languages have the implementation of data classes as a part of their syntax and share similar APIs.

See Data Classes in Kotlin (also Case Classes in Scala):

data class User(val name: String = "Anonymous", val age: Int = 0)

val user = User(name = "Liza", age = 23)
val updated = user.copy(name = "Ann")

user.equals(updated)

And Data Classes in Python:

from dataclasses import dataclass, replace

@dataclass
class User:
  name: str = "Anonymous"
  age: int = 0

user = User(name="Liza", age=23)
updated = replace(user, name="Ann")

user == updated

Contributing

The project is opened for any contributions (features, updates, fixes, etc). If you're interested, please check the contributing guidelines.

The project is licensed under the ISC license.

More Repositories

1

picocolors

The tiniest and the fastest library for terminal output formatting with ANSI colors
JavaScript
1,278
star
2

react-coroutine

Make your async components compact and descriptive by leveraging the power of the language features
JavaScript
263
star
3

jest-webdriver

Connect Jest tests to Selenium WebDriver
JavaScript
223
star
4

react-warehouse

React resource loader implementation
JavaScript
34
star
5

gulp-complexity

A JavaScript complexity analysis gulp task.
JavaScript
30
star
6

flux-stateful

Straightforward implementation for Flux stores. Maintain state easily.
JavaScript
30
star
7

gulp-jsinspect

A JavaScript copy-paste analysis gulp task.
JavaScript
20
star
8

newsletter

Observer done right
JavaScript
13
star
9

dgelong

A JavaScript Implementation of Useful First-class Citizens.
JavaScript
13
star
10

retransmitter

Async-friendly stateful React containers
JavaScript
12
star
11

selectre

Time & Space Efficient State Selectors
TypeScript
11
star
12

reflux-stateful

React-like state management in your Reflux stores.
JavaScript
10
star
13

redux-suspense

Enforcing better code patterns in existing Redux-based applications
JavaScript
9
star
14

babel-plugin-style-literal

Compile tagged string literal with CSS to a plain object with JSX inline styles
JavaScript
8
star
15

actor-system

Build robust and resilient message-driven systems
JavaScript
8
star
16

layout-elements

Layout primitive that abstracts flexbox.
JavaScript
6
star
17

string-interpolate

Simple string interpolation
JavaScript
5
star
18

distribution-chart

React + D3 + React Motion
JavaScript
5
star
19

use-bounding-rect

A tiny React hook to access DOM Rect of an element dynamically.
JavaScript
4
star
20

access-object

Data Access Object for your resources.
JavaScript
3
star
21

flux-guidelines

Comprehensive guide for idiomatic Flux
3
star
22

message-script

A set of tools for creating message-driven systems in JavaScript
JavaScript
3
star
23

node-bump

Update project version and create tag easily
JavaScript
2
star
24

dataflow-comparison

JavaScript
2
star
25

modular

Run your CJS Modules in browser without any build scripts. Simple CommonJS Module/1.1 proposal implementation
JavaScript
2
star
26

react-datablocks

Seamless arbitrary data visualization
JavaScript
2
star
27

gulp-wrap-exports

Wrap CommonJS module in IIFE and create global variable for browser
JavaScript
2
star
28

react-handle-event

JavaScript
2
star
29

md-reader

Parse and read Markdown files in browser
CSS
1
star
30

react-ux

JavaScript
1
star
31

OctoRobot

Web application for making predictions.
JavaScript
1
star
32

npm-shrink

Make sure you don't use unreliable packages. Help people with contributing in their projects.
JavaScript
1
star
33

touchy-things

https://alexeyraspopov.github.io/touchy-things
HTML
1
star
34

engineer-vs-developer

HTML
1
star
35

react-suspense-sandbox

Experimenting with React Suspense
JavaScript
1
star
36

parcel-transformer-inline-css-modules

1
star
37

react-viz

React, D3, and stuff
HTML
1
star
38

monorepo

Simple monorepo setup with NPM Workspaces
JavaScript
1
star
39

dotfiles

A collection of frontend-related config files
1
star
40

learn-script

A JavaScript implementation of machine learning algorithms.
JavaScript
1
star
41

dom-walker

DOM Walker based on TreeWalker API
JavaScript
1
star
42

testing-example

JavaScript
1
star
43

alexeyraspopov.github.io

Personal site
1
star
44

async-structure

Set of advanced pattern implementations for dealing with async data and flows
JavaScript
1
star
45

heapsort

A JavaScript Heapsort Algorithm Implementation
JavaScript
1
star
46

modalify

๐Ÿšง WCAG compliant, mobile ready, framework agnostic modal dialogs implementation
JavaScript
1
star
47

parcel-plugin-flow

๐Ÿ“ฆSeamlessly integrate Flow type checking to your Parcel-based project
JavaScript
1
star
48

halstead

A JavaScript implementation of Halstead complexity measures.
JavaScript
1
star