You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deprecation and removal provides us a back-out plan.
Can we do this with some of our flags?
"I know it when I see it"
We don't follow semver, but a major version is a good time to start deprecating.
Feels like we should have good explanations, work-arounds, maybe quick fixes.
Must have a "shhh I don't mind using deprecated flags".
Is deprecation worthwhile, or will people turn it off?
We do want to give people leeway and a heads-up.
Obvious flags for deprecation
charset - doesn't do anything today?
noImplicitUseStrict
Acts as if "use strict" is at the top of a file.
noStrictGenericChecks
We used to erase generics in signatures when relating them. 2.4 changes this, but dependencies would have issues and we needed an opt-out flag.
out - various issues, use outFile instead.
keyofStringsOnly - rumored that we wanted this to be a temporary flag. People needed to write string & ... instead of ... in some cases, but was confusing.
suppressExcessPropertyErrors - type system has other capabilities for enabling these.
suppressImplicitAnyIndexErrors - literal types probably help guard against these.
Questionable
noFallthroughCasesInSwitch - feels linty - not our domain
The other ones seem like misfeatures/back-compat.
Arguable
target: es3
What's it even have?
Errors for using getters/setters, property name downleveling for reserved words, removal of trailing commas.
What about the default for target?
Syntax might not work in target environment.
We would like to move the target to a newer version. But do we deprecate ES3 first, or change the default to ES5 and deprecate explicit targets of ES3?
Could just say target is always required?
module: umd, system, amd
Seems like these all have usage.
Snooze, maybe talk to some teams to better understand usage.
What's the upgrade process?
Maybe --upgrade on the command-line?
What about making TypeScript just do the right type-checking out of the box?
noImplicitAny and strictNullChecks really should be on.
types array?
Ideally should be [].
No way for a user to get the old 4.9 behavior.
What are we going for? Defaults always work right? Most correct tsconfig.jsons are always relatively short?
Configuration Profiles/Versions
#50997
extendsfield intsconfig.jsonsupport arrays seems like a reasonable workaround.tsconfig.extendsas array #29118Flag Deprecations
#51000
charset- doesn't do anything today?noImplicitUseStrict"use strict"is at the top of a file.noStrictGenericChecksout- various issues, useoutFileinstead.keyofStringsOnly- rumored that we wanted this to be a temporary flag. People needed to writestring & ...instead of...in some cases, but was confusing.suppressExcessPropertyErrors- type system has other capabilities for enabling these.suppressImplicitAnyIndexErrors- literal types probably help guard against these.noFallthroughCasesInSwitch- feels linty - not our domaintarget: es3targetenvironment.targets of ES3?targetis always required?module: umd, system, amd--upgradeon the command-line?noImplicitAnyandstrictNullChecksreally should be on.typesarray?[].tsconfig.jsons are always relatively short?