Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

✨ Experimental proof-of-concept typescript-go powered JS/TS linter written in Go

License

NotificationsYou must be signed in to change notification settings

typescript-eslint/tsgolint

Repository files navigation

tsgolint is an experimental proof-of-concepttypescript-go powered JS/TS linter written in Go.

Important

tsgolint is a prototype in the early stages of development.It is not actively being worked on, nor is it expected to be production ready.SeeGoals and Non-Goals.

Running tsgolint on microsoft/typescript repo

What's been prototyped

  • Primitive linter engine
  • Lint rules tester
  • Source code fixer
  • 40type-aware typescript-eslint's rules
  • Basictsgolint CLI

Speedup over ESLint

tsgolint is20-40 times faster than ESLint + typescript-eslint.

Most of the speedup is due to the following facts:

  • Native speed parsing and type-checking (thanks totypescript-go)
  • No moreTS AST -> ESTree AST conversions. TS AST is directly used in rules.
  • Parallel parsing, type checking and linting.tsgolint uses all available CPU cores.

Seebenchmarks for more info.

Implemented rules

NameStatus
await-thenable
no-array-delete
no-base-to-string
no-confusing-void-expression
no-duplicate-type-constituents
no-floating-promises
no-for-in-array
no-implied-eval
no-meaningless-void-operator
no-misused-promises
no-misused-spread
no-mixed-enums
no-redundant-type-constituents
no-unnecessary-boolean-literal-compare
no-unnecessary-template-expression
no-unnecessary-type-arguments
no-unnecessary-type-assertion
no-unsafe-argument
no-unsafe-assignment
no-unsafe-call
no-unsafe-enum-comparison
no-unsafe-member-access
no-unsafe-return
no-unsafe-type-assertion
no-unsafe-unary-minus
non-nullable-type-assertion-style
only-throw-error
prefer-promise-reject-errors
prefer-reduce-type-parameter
prefer-return-this-type
promise-function-async
related-getter-setter-pairs
require-array-sort-compare
require-await
restrict-plus-operands
restrict-template-expressions
return-await
switch-exhaustiveness-check
unbound-method
use-unknown-in-catch-callback-variable

What hasn't been prototyped

  • Non-type-aware rules
  • Editor extension
  • Rich CLI features
  • Config file
  • Plugin system

What about JS plugins?

JS-based plugins are not currently supported.

  • Experimental support is available on theexperimental-eslint-compat branch using thegoja JavaScript engine.
  • While functional, performance was significantly worse than ESLint running in Node.js, so this approach is currently on hold.
  • If a faster, lower-allocation JS interpreter in Go becomes available in the future, we may revisit this idea.

Goals and Non-Goals

tsgolint is an experiment.It is not under active development.

Goals: to explore architectures and performance characteristics.We want to investigate how much faster linting could be if we moved the linter to Go alongside typescript-go.

Non-Goals: we have no plans to take significant development budget away from typescript-eslint to work on tsgolint.Our plan is to continue to work on typescript-eslint to supported typed linting with ESLint.Experiments such as tsgolint should not be taken as indications of any project direction.

If you want faster typed linting with ESLint, seetypescript-eslint/typescript-eslint#10940 Enhancement: Use TypeScript's Go port (tsgo / typescript-go) for type information.

Buildingtsgolint

git submodule update --init# init typescript-go submodulecd typescript-gogit am --3way --no-gpg-sign ../patches/*.patch# apply typescript-go patchescd ..go build -o tsgolint ./cmd/tsgolint

About

✨ Experimental proof-of-concept typescript-go powered JS/TS linter written in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp