Enable support for try expressions in JavaScript tools
npm install tc39-try[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![Unit Test][unit-test-src]][unit-test-href]
An implementation of the ECMAScript Try Operator proposal.
> ⚠️ For demo and toy-level projects only - not for production use!
For a working demo, visit the sxzz/tc39-try-demo.
Install the package via npm:
``bash`
npm i tc39-try
This demo project showcases full toolchain integration for the try operator:
- ✅ TypeScript - Full type support with transformations.
- ✅ Bundler - Seamless integration with Vite and other bundlers via unplugin.
- ✅ Prettier - Code formatting support.
- ✅ ESLint - Linting with proper syntax recognition.
- ✅ Development - Hot reload and dev server support powered by Vite.
To integrate with Vite, configure your vite.config.ts as follows:
`typescript
// vite.config.ts
import Try from 'tc39-try/unplugin'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [Try.vite()],
})
`
For proper syntax highlighting and IntelliSense support of the try operator, install the TS Macro extension in VS Code.
Alternatively, search for "TS Macro" in the VS Code Extensions marketplace.
Then, configure your ts-macro.config.ts:
`typescript
// ts-macro.config.ts
import volar from 'tc39-try/volar'
export default {
plugins: [volar()],
}
`
To enable Prettier support for the try operator, configure your prettier.config.js as follows:
`js
// prettier.config.js
import { fileURLToPath } from 'node:url'
export default {
// ...
plugins: [fileURLToPath(import.meta.resolve('tc39-try/prettier'))],
}
`
To enable ESLint support for the try operator, configure your eslint.config.js as follows:
`js
// eslint.config.js
import { GLOB_JS, GLOB_TS, sxzz } from '@sxzz/eslint-config'
import * as tsParser from 'tc39-try/eslint-typescript-parser'
import * as jsParser from 'tc39-try/espree'
export default sxzz().append(
{
files: [GLOB_TS],
languageOptions: { parser: tsParser },
},
{
files: [GLOB_JS],
languageOptions: { parser: jsParser },
},
)
`
The ECMAScript Try Operator is a stage 0 proposal that introduces a new syntax for error handling. It simplifies error handling by replacing traditional try-catch blocks with a more concise try operator.
#### Traditional try-catch:
`typescript`
let result1
try {
result1 = riskyFunction()
} catch (error) {
console.error(error) // Handle error
}
#### With the try operator:
`ts``
const result2 = try riskyFunction() // Returns Result
MIT License © 2025 Kevin Deng
[npm-version-src]: https://img.shields.io/npm/v/tc39-try.svg
[npm-version-href]: https://npmjs.com/package/tc39-try
[npm-downloads-src]: https://img.shields.io/npm/dm/tc39-try
[npm-downloads-href]: https://www.npmcharts.com/compare/tc39-try?interval=30
[unit-test-src]: https://github.com/sxzz/tc39-try/actions/workflows/unit-test.yml/badge.svg
[unit-test-href]: https://github.com/sxzz/tc39-try/actions/workflows/unit-test.yml