Runtime Type Design
type RunTimeType = (input: unknown) => input is T
const stringType = (input: unknown): input is string => {
return typeof input === 'string'
}
Slide 19
Slide 19 text
Runtime Type Design
type RunTimeType = (input: unknown) => asserts input is T
const stringType = (input: unknown): asserts input is string => {
if (typeof input !== 'string') throw new Error()
}
Runtime Type Design
type RunTimeType = (input: unknown) => T
// or throw Error in case of failure
const stringType = (input: unknown) => {
if (typeof input !== 'string') throw new Error(...)
return input
}
Slide 22
Slide 22 text
Minimal Implementation
const string = (input: unknown) => {
if (typeof input !== 'string') throw new Error()
return input
}
Slide 23
Slide 23 text
Minimal Implementation
const number = (input: unknown) => {
if (typeof input !== 'number') throw new Error()
return input
}
Slide 24
Slide 24 text
Minimal Implementation
const literal = (value: V): Type => {
return (input: unknown) => {
if (input !== value) throw new Error()
return value
}
}