Skip to content

Instantly share code, notes, and snippets.

View delvalle's full-sized avatar

Pablo A. Del Valle H. delvalle

View GitHub Profile
@delvalle
delvalle / interceptor.account.ts
Last active July 6, 2020 10:40
Typescript Design Patterns
class Account {
private _observers: Observers = new Observers();
constructor(private _type: string, private _balance: number) {
this._observers.subscribe(new Observer(`${this._type} balance`));
}
get balance() {
return this._balance;
};
@delvalle
delvalle / interceptor.ts
Last active June 12, 2020 03:33
Typescript Design Patterns
const fee = (feeAmount: number) => {
return function (
target: Object,
propertyName: string,
propertyDescriptor: PropertyDescriptor,
) {
const originalSetter = propertyDescriptor.set;
propertyDescriptor.set = function (next) {
const newBalance = next - feeAmount;
@delvalle
delvalle / observer.account.ts
Created June 12, 2020 00:53
Typescript Design Patterns
class Account {
private _observers: Observers = new Observers();
constructor(private _type: string, private _balance: number) {
this._observers.subscribe(new Observer(`${this._type} balance`));
}
get balance() {
return this._balance;
};
@delvalle
delvalle / observer.ts
Last active June 12, 2020 00:51
Typescript Design Patterns
type ObserverCallback = (newValue: any) => void;
class Observer {
constructor(private _subject: string, private _callback?: ObserverCallback) {
}
get subject() {
return this._subject;
}
@delvalle
delvalle / delegate.ts
Last active June 12, 2020 00:52
Typescript Design Patterns
interface ITransactionDelegate {
deduct(amount: number, context: Account): void;
}
class Transaction implements ITransactionDelegate {
deduct = (amount: number, context: Account) => context.balance = context.balance - amount;
}
class Account {
constructor(private _type: string, private _balance: number) {
@delvalle
delvalle / react.class.ts
Last active June 9, 2020 22:34
TypeScript Node, Element, HTMLElement, ReactElement
import React, { Component, ReactNode } from 'react';
type Props = {
whatAnimal:string,
};
export class Animal extends Component<Props> {
componentWillMount() {
// Class Component Lifecycle
}
@delvalle
delvalle / reactfc.tsx
Last active June 9, 2020 18:36
TypeScript Node, Element, HTMLElement, ReactElement
import React, { ReactElement } from 'react';
interface Customer {
firstName: string;
}
type Props = {
customer: Customer;
}
@delvalle
delvalle / elements.ts
Last active June 9, 2020 18:43
TypeScript Node, Element, HTMLElement, ReactElement
// create a regular div and span elements
const div = document.createElement('div');
const span = document.createElement('span');
span.id = 'span_id';
// appending the span element under the div
div.appendChild(span);
// append the div into the DOM
document.body.appendChild(div);
// will output HTMLDivElement {}
@delvalle
delvalle / server.ts
Created June 3, 2020 04:49
GraphQL/TypeScript
import 'reflect-metadata';
import { ApolloServer } from 'apollo-server-express';
import express from 'express';
import { buildSchema } from 'type-graphql';
import { init_db } from './database/init_db';
import { Resolvers } from './schema/Resolvers';
const main = async() => {
await init_db();
@delvalle
delvalle / ormconfig.json
Created June 3, 2020 04:46
GraphQL/TypeScript
{
"type": "sqlite",
"database": "./src/database/database.sqlite3",
"entities": [
"./src/models/index.ts"
]
}