How to lint for Typescript compilation issues?

前端 未结 2 1633
我寻月下人不归
我寻月下人不归 2020-12-20 11:53

Take the following Typescript arrow function:

/**
 * Returns a probably unique component name.
 * 
 * @param baseName a suggested name to make unique.
 * @re         


        
2条回答
  •  生来不讨喜
    2020-12-20 12:53

    I think your best bet is to run tsc --noEmit -p . and filter the output for errors in the modified files. For example, I saved the following script to tsc-some-files:

    #!/bin/bash
    declare -A include_files
    for f in "$@"; do
      include_files["${f#$PWD/}"]=1
    done
    node_modules/.bin/tsc --noEmit -p . | (
      status=0
      show_continuation=false
      while IFS='' read -r line; do
        case "$line" in
        (' '*)
          if $show_continuation; then
            echo "$line" >&2
          fi
          ;;
        (*)
          file="${line%%(*}"
          if [ -n "${include_files["$file"]}" ]; then
            show_continuation=true
            echo "$line" >&2
            status=1
          else
            show_continuation=false
          fi
          ;;
        esac
      done
      exit $status
    )
    

    and set ./tsc-some-files as my lint-staged command, and it seemed to work. (Writing this in a programming language other than bash, if desired, is left as an exercise for the reader.)

    Keep in mind though that editing one file can introduce an error in another file (e.g., if you changed the type of something that the other file is using), so I'd urge you to get your project clean of TypeScript errors ASAP by whatever hacks necessary (as long as you mark them so you can search for them later) and then set your hook to require no errors in the whole project. In fact, with respect to noImplicitAny in particular, when I migrated a JavaScript project to TypeScript several years ago, I wrote a script that inserted an explicit any everywhere there was an implicit any error, then I fixed the explicit anys at my leisure. I can share the script if you're interested.

提交回复
热议问题