Skip to content

What's gone

var, function, switch, loose equality, truthiness, null/undefined literals, any, enum, interface, namespace, this outside classes, key-iterating for..in, C-style for, do..while, labels, ++/--, the comma operator, declaration merging. Each has a typed replacement documented in the removed constructs reference. Everything on the removed list remains reserved and cannot be used as an identifier.

Two words are not on the removed list, though they might look reserved: type and error are contextual keywords. They open a declaration only at the start of a statement when an identifier follows (type Id = string, error NotFound({ id: string })); everywhere else they are ordinary names. So let error = validate(input), (type: string) => …, let { type } = event, and event.type are all plain code. The reflex from TypeScript, where type is already contextual, carries straight over.


Core syntax emits TypeScript without an implicit Hem runtime. Explicit library imports, including the standard Option and Result carriers, remain runtime dependencies. Part II activates with effectImportSource to enable the Effect extension. The compiler checks the configured module’s required capabilities before lowering and reports HEM3001 if they are missing. Omit the option to keep Effect syntax and generated imports disabled.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close