Typed Functional Programming in TypeScript with fp-ts

A presentation at React Day Berlin in December 2019 in Berlin, Germany by Robin Pokorny

Slide 1

Slide 1

Slide 2

Slide 2

Slide 3

Slide 3

Slide 4

Slide 4

Slide 5

Slide 5

Slide 6

Slide 6

Slide 7

Slide 7

Slide 8

Slide 8

import * as t from ‘io-ts’; const Email = t.brand( t.string, (s): s is t.Branded<string, EmailBrand> => isEmail(s), ‘Email’, ); type Email = t.TypeOf<typeof Email>;

Slide 9

Slide 9

Email.decode(”) Email.decode(‘r0b1n’) Email.decode(‘r@0b1n.at’) Email.decode(2020) Email.decode(null)

Slide 10

Slide 10

Slide 11

Slide 11

import * as E from ‘fp-ts/lib/Either’ pipe( Email.decode(anything), E.fold(onFail, onSuccess) )

Slide 12

Slide 12

const a: Email = ‘r@0b1n.at’ // -> Type ‘“r@0b1n.at”’ is not assignable to type ‘Branded<string, Email>’.

Slide 13

Slide 13

Slide 14

Slide 14

const SignUpForm = t.type({ company: String50, email: Email, password: Password, phone: option(Phone), sendNewsletter: t.boolean, }); const form = useForm( SignUpForm, initialState );

Slide 15

Slide 15

Slide 16

Slide 16

https://typescript.fun @estejs