Skip to content

try-flatten 1.1.0

Install from the command line:
Learn more about npm packages
$ npm install @frontenddev-org/try-flatten@1.1.0
Install via package.json:
"@frontenddev-org/try-flatten": "1.1.0"

About this version

try-flatten

✈ 类型安全的扁平化的 try-catch,支持同步函数、回调函数和 PromiseLike

code-review dependency-review Codacy Badge Codacy Badge npm release

为什么需要这个

try-catch 块级作用域带来的问题

// 需要先在 try-catch 块级作用域外定义变量,此处还需要先声明类型
let res: Result | undefined;

try {
  // 块级作用域内赋值
  res = await somePromise;
} catch (err) {
  // 此处 err 类型为 unknown
  console.log(err);
  return;
}

// try-catch 块级作用域外使用该变量
// 因为 res 类型包含 undefined,所以还要加有值判断
if (res) {
  console.log(res.prop);
}

用上 try-flatten

const [err, res] = await somePromise;

// 只需要判断 err 是否存在即可
if (err) {
  // 此处 err 类型为 Error,res 类型为 undefined
  console.log(err instanceof Error);
  console.log(res === undefined);
  return;
}

// 此处 err 类型为 null,res 类型为 Result
console.log(err === null);
console.log(res.prop);

下载安装

npm install try-flatten

在线试用

Playground Link

对同步函数的 try-flatten

const [err, res] = tryFlatten(() => 1);

// 只需要判断 err 是否存在即可
if (err) {
  // 此处 err 类型为 Error,res 类型为 undefined
  console.log(err instanceof Error);
  console.log(res === undefined);
  return;
}

// 此处 err 类型为 null,res 类型为 number
console.log(err === null);
console.log(res === 1);

对回调函数的 try-flatten

const [err, res] = await tryFlatten((callback: (err: Error | null, res: number) => void) => {
  callback(null, 1);
});

// 只需要判断 err 是否存在即可
if (err) {
  // 此处 err 类型为 Error,res 类型为 undefined
  console.log(err instanceof Error);
  console.log(res === undefined);
  return;
}

// 此处 err 类型为 null,res 类型为 number
console.log(err === null);
console.log(res === 1);

对 PromiseLike 的 try-flatten

const [err, res] = await tryFlatten(Promise.resolve(1));

// 只需要判断 err 是否存在即可
if (err) {
  // 此处 err 类型为 Error,res 类型为 undefined
  console.log(err instanceof Error);
  console.log(res === undefined);
  return;
}

// 此处 err 类型为 null,res 类型为 number
console.log(err === null);
console.log(res === 1);

启发

Details


Assets

  • try-flatten-1.1.0.tgz

Download activity

  • Total downloads 0
  • Last 30 days 0
  • Last week 0
  • Today 0