Skip to content

Rule proposal: explicit-resource-management-literal-pair-using-dispose #7160

Closed as not planned
@loynoir

Description

@loynoir

Before You File a Proposal Please Confirm You Have Done The Following...

My proposal is suitable for this project

  • My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
  • My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
  • I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).

Description

  • When RHS literal object have literal property Symbol.dispose, LHS should have using

  • When LHS have using, RHS should be literal object with literal property Symbol.dispose

Fail Cases

const x = {
  [Symbol.dispose]() {
    console.log(2, { x });
  },
};

console.log(1, { x });
using x = {
  dispose() {
    console.log(2, { x });
  },
};

console.log(1, { x });
const fn = () => {
  return {
    [Symbol.dispose]() {
      console.log(2, { x });
    },
  }
}

using x = fn();

console.log(1, { x });

Pass Cases

using x = {
  [Symbol.dispose]() {
    console.log(2, { x });
  },
};

console.log(1, { x });

Additional Info

https://github.com/tc39/proposal-explicit-resource-management

https://devblogs.microsoft.com/typescript/announcing-typescript-5-2-beta/#using-declarations-and-explicit-resource-management

microsoft/TypeScript#54505

evanw/esbuild#3191

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions