Oh, I have no idea, nor do I care about runtime. I just want to TypeScript to let me know if I did it right or not at compile time.
I'm curious why you're asking?
Here's what I got from TypeScript playground...
This code:
type WaitingOnUser = { type: 'waitingOnUser' }
type Loading = { type: 'loading' }
type Failed = { type: 'failed', error: string }
type Success = { type: 'success', data: Array<string> }
type RemoteData
= WaitingOnUser
| Loading
| Failed
| Success
const succeeded:Success = { type: 'success', data: ['uno', 'dos']}
console.log(succeeded)
const didSucceed = (remoteData:RemoteData):boolean => {
switch(remoteData.type) {
case 'waitingOnUser':
return false
case 'loading':
return false
case 'failed':
return false
case 'success':
return true
}
}
console.log(didSucceed(succeeded))
Compiles to:
"use strict";
const succeeded = { type: 'success', data: ['uno', 'dos'] };
console.log(succeeded);
const didSucceed = (remoteData) => {
switch (remoteData.type) {
case 'waitingOnUser':
return false;
case 'loading':
return false;
case 'failed':
return false;
case 'success':
return true;
}
};
console.log(didSucceed(succeeded));