Data Class

Модели данных. Бесплатно, без СМС

Тот самый Распопов, который делает лайтнинги по 45 минут

			async getUserList() {
			  const response = await fetch('/api/users/');
			  return response.json();
			}
		
			function UserInfoView({ user }) {
			  return ...;
			}
		

Что это за данные?
Что внутри?

			class User {
			  constructor(data) {
			    this.id = data.id;
			    this.name = data.name || 'Anonymous';
			    this.age = data.age || 0;
			  }
			}
		
const user = new User({ id: '...', name: 'Liza' });
			class User {
			  constructor(data) {
			    // ...
			  }
			 
			  copy(patch) {
			    return new User({ ...this, ...patch });
			  }
			}
		

Потому что immutable!

Неизменяемые персистентные структуры данных ❤️

			class User {
			  constructor(data) {
			    // ...
			  }
			 
			  equals(user) {
			    return user.id === this.id && ...;
			  }
			}
		
			class User {
			  constructor(data) {
			    // ...
			  }
			 
			  isAdult() {
			    return this.age >= 18;
			  }
			}
		

dataclass.js.org

			class User {
			  constructor(data) {
			    this.id = data.id;
			    this.name = data.name || 'Anonymous';
			    this.age = data.age || 0;
			  }
			}
		
			class User extends Record {
			  id = null;
			  name = 'Anonymous';
			  age = 0;
			}
		
			class User extends Record {
			  id: ID = null;
			  name: string = 'Anonymous';
			  age: number = 0;
			}
		
			const user = new User({ ... });
			const user2 = user.copy({ name: '...' });
			user.equals(user2);
		

dataclass.js.org

npm install dataclass