Assertions
An assertion declares that a condition be true before executing subsequent code.
- If the condition resolves to 
truethe code continues running. - If the condition resolves to 
falsean error will be thrown. 
Errors
assert
Asserts that a condition is true, ensuring that whatever condition is being checked must be true for the remainder of the containing scope.
The narrow type of boolean is an intentional design decision.
function assert(condition: boolean, message?: string): asserts condition;Other assertion functions may accept "truthy" and "falsy" conditions, while assert only accepts conditions that resolve to boolean.
The goal is to promote consideration from consumers when dealing with potentially ambiguous values like 0 or '', which can introduce subtle bugs.
Messages
The assert function has a default message:
assert(false);// → TypeError: Assert failedOr you can provide a custom message:
let invalidValue = -1;assert(invalidValue >= 0, `Expected a non-negative number, but received: ${invalidValue}`);// → TypeError: Expected a non-negative number, but received: -1assertNever
Asserts that allegedly unreachable code has been executed.
function assertNever(condition: never): never;Use assertNever to catch logic forks that shouldn't be possible.
function doThing(type: 'draft' | 'published') {  switch (type) {    case 'draft':      return; /*...*/    case 'published':      return; /*...*/
    default:      assertNever(type);  }}Regardless of the condition, this function always throws.
doThing('archived');// → Error: Unexpected call to assertNever: 'archived'Logs
warning
Similar to assert but only logs a warning if the condition is not met.
function warning(condition: boolean, message: string): void;Use warning to let consumers know about potentially hazardous circumstances.
Never logs in production.
warning(options.scrollEventThrottle === 0, 'Unthrottled scroll handler may harm performance.');// → console.warn('Warning: Unthrottled scroll handler may harm performance.');