Skip to content

Instantly share code, notes, and snippets.

View rileyhilliard's full-sized avatar

Riley Hilliard rileyhilliard

View GitHub Profile
@rileyhilliard
rileyhilliard / controllers.application\.js
Last active July 15, 2021 00:30
Parent Child model data lookup
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
@rileyhilliard
rileyhilliard / controllers.application\.js
Last active January 28, 2021 21:52
router.transitionTo() Twiddle
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
@rileyhilliard
rileyhilliard / controllers.application\.js
Created September 21, 2020 20:29
conditional helper
import Controller from '@ember/controller';
export default class ApplicationController extends Controller {
appName = 'Ember Twiddle';
}
@rileyhilliard
rileyhilliard / controllers.application.js
Last active September 13, 2019 21:05
Debounced Event Test
import Ember from 'ember';
import { debounce } from '@ember/runloop';
// This isnt totally necessary, but in the real world where an error.message might be really
// long it might be better to reduce the stored key to something more consistant
function hasher(str) {
var hash = 0, i, chr;
if (str.length === 0) return hash;
for (i = 0; i < str.length; i++) {
chr = str.charCodeAt(i);
@rileyhilliard
rileyhilliard / class-error-example.ts
Last active April 13, 2019 00:15
Class Error Example
// Example of a class instantiation that is missing
// required class constructor object properties
import Person from 'person';
// Create a new person that is missing required object structures
const jane = new Person ({
first: 'Jane',
// Type Error! Property 'last' is missing
// Type Error! Property 'geo' is missing
});
@rileyhilliard
rileyhilliard / class-example.ts
Last active April 13, 2019 00:15
Class Example
// Example of a valid class instantiation that contains
// all the required class constructor object properties
import Person from 'person';
// Create a new person of the shape defined by our interfaces
const john = new Person ({
first: 'John',
last: 'Doe',
geo: {
country: 'USA',
@rileyhilliard
rileyhilliard / typescript-class-destructure.ts
Last active April 16, 2019 02:37
TypeScript Class Destructure
interface GeoInterface {
state: string;
country: string;
}
interface PersonInterface {
first: string;
last: string;
// a Person must contain a 'geo' object that matches
// the defined GeoInterface structure
@rileyhilliard
rileyhilliard / array-destructure.ts
Last active April 12, 2019 21:39
Array Destructure
// a 'Person' object requires 'first' and 'last'
// properties whose values are strings
interface Person {
first: string;
last: string;
}
// This defines that the first functional argument
// must be an Array of 'Person' objects, then destructs
// the first person's first and last name properties
const person = { first: 'John', last: 'Doe' };
/* -- Correct TypeScript Functional Destructure -- */
// Define a 'Person' interface with the shape of
// the expected Person object argument
interface Person {
first: string;
last: string;
}
@rileyhilliard
rileyhilliard / incorrect-destructure.ts
Last active April 7, 2019 23:44
Incorrect TypeScript Functional Destructure
const person = { first: 'John', last: 'Doe' };
/* -------------- TypeScript Function -------------- */
const hello1 = (first: string, last: string) =>
`Hello ${first} ${last}!`;
// outputs "Hello John Doe!"
hello1(person.first, person.last);
/* -- Incorrect TypeScript Functional Destructure -- */