TS2678

Type 'StreamStatus' is not comparable to type 'number'.

Broken Code ❌

enum StreamStatus {
  ONLINE = 'ONLINE',
  OFFLINE = 'OFFLINE',
}
 
interface StreamResponse {
  status: number;
}
 
function handleResponse(response: StreamResponse): void {
  switch (response.status) {
    case StreamStatus.ONLINE:
      console.log('You are online.');
      break;
    case StreamStatus.OFFLINE:
      console.log('You are offline.');
      break;
  }
}

Fixed Code ✔️

The StreamResponse declares a "status" property of type number but the switch-case statement checks against StreamStatus, so we have to adjust the typing for "status" of StreamResponse:

enum StreamStatus {
  ONLINE = 'ONLINE',
  OFFLINE = 'OFFLINE',
}
 
interface StreamResponse {
  status: StreamStatus;
}
 
function handleResponse(response: StreamResponse): void {
  switch (response.status) {
    case StreamStatus.ONLINE:
      console.log('You are online.');
      break;
    case StreamStatus.OFFLINE:
      console.log('You are offline.');
      break;
  }
}