Skip to content

Instantly share code, notes, and snippets.

View henrik1's full-sized avatar
💯

Henrik Larsen Toft henrik1

💯
View GitHub Profile
@henrik1
henrik1 / semantic-seo.html
Created August 2, 2022 19:10
Semantic SEO
<div vocab="https://schema.org/" typeof="Actor">
<span property="name">Millie Bobby Brown</span> starred in
<span property="movie" typeof="Movie" href="https://www.imdb.com/title/tt4574334">
<span property="name">Stranger Things</span>.
</span>
</div>
@henrik1
henrik1 / prefers-reduced-motion.scss
Last active June 21, 2022 11:31
prefers-reduced-motion
@media (prefers-reduced-motion: no-preference) {
button {
transition: all 300ms ease-in-out;
border: 2px solid rgba(255,255,255, 0.4);
transform: scale(1);
&:hover {
transform: scale(1.1);
border: 2px solid rgba(255,255,255, 1);
}
@henrik1
henrik1 / PickUtility.ts
Created June 19, 2022 21:19
Pick type utility
type Article = {
title: string;
body: string;
image: string;
}
type ArticlePreview = Pick<Article, 'title' | 'body'>
@henrik1
henrik1 / OmitUtility.ts
Last active June 19, 2022 21:21
Omit utility type
type Article = {
title: string;
body: string;
image: string;
}
type ArticlePreview = Omit<Article, 'image'>;
@henrik1
henrik1 / RequiredType.ts
Last active August 16, 2022 11:20
Required type
type User = {
id: string;
email: string;
name?: string;
}
type AdminUser = Required<User>;
const admin: AdminUser = {
id: "1",
@henrik1
henrik1 / partial-utility.ts
Last active June 19, 2022 21:21
Partial utility
type Person = {
id: string;
name: string;
}
const updateDetails = (person: Person, fieldsToUpdate: Partial<Person>) => ({
...person,
...fieldsToUpdate
});
@henrik1
henrik1 / advanced-types.ts
Created June 19, 2022 20:43
Advanced Typescript types
// Intersection types
type Office = { name: string } & Location;
// Mapped type
type Artist = { name: string, bio: string };
type Subscriber = {
[Property in keyof Type]: (val: Type[Property]) => void;
}
type ArtistSub = Subscriber<Artist>
@henrik1
henrik1 / type-syntax.ts
Last active June 19, 2022 20:41
Type alias syntax
// Object literal
type User {
name: string; // allow only string
readonly email: string // email is also a string, but its immutable and cannot be changed
new: () => User;
new(): User;
[key: string]: string | number;
}
@henrik1
henrik1 / get-set.ts
Created June 19, 2022 20:22
Typescript getters & setters
interface Ruler {
get size(): number;
set size(value: number | string):
}
const r:Ruler = ...
r.size = 100;
r.size = "100";
@henrik1
henrik1 / constrained-generic-fn.ts
Created June 19, 2022 20:19
Type constrained generic functions
const sortBy = function<T extends SomeType> ((a, b): boolean, list: T[]): T[] {
return ...
};