Skip to content

'Cause ESNext is not enough

An opinionated TypeScript superset for the next generation of JavaScript
Terminal window
pnpm create jsp
JS+ TypeScript
Object.keys(envars)
.map(envar => `${envar}=${envars[envar]}`)
.join(' ')
|> `$ ${%}`
|> chalk.dim(%, 'node', args.join(' '))
|> console.log(%)
console.log(
chalk.dim(
`$ ${Object.keys(envars)
.map(envar =>
`${envar}=${envars[envar]}`)
.join(' ')
}`,
'node',
args.join(' ')
)
);
JS+ TypeScript
const one = 1;
const two = 2;
const three = 3;
one == two == three; // false
one != two != three; // true
one === two === three; // false
one !== two !== three; // true
one < two < three; // true
one <= two <= three; // true
one > two > three; // false
one >= two >= three; // false
const one = 1;
const two = 2;
const three = 3;
one == two && two == three; // false
one != two && two != three; // true
one === two && two === three; // false
one !== two && two !== three; // true
one < two && two < three; // true
one <= two && two <= three; // true
one > two && two > three; // false
one >= two && two >= three; // false
JS+ TypeScript
class C {
message = "hello!";
@bound
m() {
console.log(this.message);
}
}
function bound(value, { name, addInitializer }) {
addInitializer(function () {
this[name] = this[name].bind(this);
});
}
// TypeScript supports decorators behind an experimental flag
// JavaScript doesn't support decorators yet








JavaScript.tm
We strongly believe that certain trademarks shouldn't exist