-
Notifications
You must be signed in to change notification settings - Fork 13.1k
Closed
Labels
Design NotesNotes from our design meetingsNotes from our design meetings
Description
Configuration Profiles/Versions
- Some option that tells TypeScript "use some set of well-known best practice options."
- Somewhat opaque, needs more documentation.
- Adds more complexity.
- Having the
extendsfield intsconfig.jsonsupport arrays seems like a reasonable workaround. - Seems like this dovetails into deprecations and default changes.
Flag Deprecations
- Do we ever believe we can remove flags?
- Question: do we always error on unknown flags?
- Requires transitions from:
- Deprecated (warning)
- Errored-on specially, but no-op behavior.
- Errored-on as unexpected(?)
- Requires transitions from:
- Question: do we always error on unknown flags?
- 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.
- Acts as if
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, 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.
- 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
targetenvironment. - 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
targetis always required?
- Syntax might not work in
- What's it even have?
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
--upgradeon the command-line?
- Maybe
- What about making TypeScript just do the right type-checking out of the box?
noImplicitAnyandstrictNullChecksreally should be on.
typesarray?- Ideally should be
[]. - No way for a user to get the old 4.9 behavior.
- Ideally should be
- What are we going for? Defaults always work right? Most correct
tsconfig.jsons are always relatively short?
Metadata
Metadata
Assignees
Labels
Design NotesNotes from our design meetingsNotes from our design meetings