* Lazily compute signature type predicates
* Use an instance of IdentifierTypePredicate to represent an unresolved type predicate
* Simplify `getMaybeTypePredicate`
* Invert representation of `resolvedTypePredicate`
* Remove `__unresolvedTypePredicate` type and remember to use `noTypePredicate` instead of `undefined` when in all `createSignature` calls
* Fix style of getTypePredicateOfSignature
* Use in createGetSymbolWalker
* Fix bugs for unions of type predicates
* Code review
* Make noTypePredicate purely an implementation detail of getTypePredictateOfSignature
* Add test
* Add test for #19642
* Add test with reversed order
I advocated against immediately clearing the console when starting --watch in #17756 because it was confusing to have the console suddenly become blank, wait a while, and _then_ give output. After using the feature for a little while, I think it's a little disorienting how the console will only start clearing after the first recompile. This change clears the console and immediately prints a new "Starting compilation in watch mode..." message.
* tsc --watch should clear screen on new compilation
* added optional clearScreen method to System]
* implemented via `x1Bc`, reset screen
* fixes 13020
* Feedback on if statements; api .d.ts baseline additions
* Stopped clearing screen in tsc.js's reportWatchMode
* Added unit tests
* Still instantiate the extends clause even when theres a noimplicitany error in js
* Only be permissive for JS
* In JS, instantiate classes even when they have too many type arguments, instead of returning unknownType
* Fix#19959 and #19958: Remove un-localizable messages
* Update message
* Reorder error messages
* Fix https://github.com/Microsoft/TypeScript/issues/15399: remove periods at the end of messages
* Accept baselines for error code changes
* accept baselines for removed periods
* Update diagnostic messages
Previously, when inferring to a self-referential (or otherwise recursive)
homomorphic mapped type from a source type that also has recursive
references, type inference would enter infinite recursion.
Now there is a more complex stack for mapped type inference. It mirrors
the existing symbolStack but (1) includes the source type and (2) is
passed through inferTypeForHomomorphicMappedType, which is actually
called outside of inferTypes, and so restarts the symbolStack cache
every time.
Formerly, they were excluded as values, but the error is just as
relevant for classes.
Note that it is not applied to enums since switching to an indexed
access expression will not help for an enum.
Don't issue a "multiple declarations must have the same type" error for
JS static property assignments, because these don't appear to have a
type in this case.
* Error when LHS of instanceof is Union of Primitives #18519
* Refactor to allTypesAssignableToKind method and update test
* Use ternary expression instead of if / else blocks
* Remove length limit on spelling suggestions; use levenshteinWithMax for performance
* Remove suggestion exceptions
* Move to checker.ts
* Reintroduce candidateName max length
This means that Javascript property assignments always create a
namespace, never statics on a class. The ES5->ES6 class refactoring
still needs to be updated.