-
Notifications
You must be signed in to change notification settings - Fork 8.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prepare for TS 3.7 upgrade #47794
Prepare for TS 3.7 upgrade #47794
Conversation
@@ -86,7 +86,7 @@ export class DashboardContainerExample extends React.Component<Props, State> { | |||
} | |||
|
|||
public switchViewMode = () => { | |||
this.setState((prevState: State) => { | |||
this.setState<'viewMode'>((prevState: State) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ It complains that { viewMode }
is missing loading
, because I think it cannot automatically infer the generic type here, due to the if
(it actually infers it to never
).
@@ -61,7 +61,7 @@ function isWhitelistedHostnameInUri(config: ActionsConfigType, uri: string): boo | |||
tryCatch(() => new URL(uri)), | |||
map(url => url.hostname), | |||
mapNullable(hostname => isWhitelisted(config, hostname)), | |||
getOrElse(() => false) | |||
getOrElse<boolean>(() => false) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ It infers the generic type false
here, and then complains, that the mapNullable
produces a boolean which is not assignable to false
. I think the typings of pipe
are just a bit weird, that they are "checking backwards" from the last function.
@@ -95,4 +95,4 @@ export interface AlertingPlugin { | |||
start: PluginStartContract; | |||
} | |||
|
|||
export type AlertTypeRegistry = PublicMethodsOf<AlertTypeRegistry>; | |||
export type AlertTypeRegistry = PublicMethodsOf<OrigAlertTypeRegistry>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ The usual 3.7 issue, that you cannot have an import and export with the same name (but different values) in one file anymore.
@@ -96,6 +96,7 @@ declare module '@elastic/eui' { | |||
message?: any; | |||
rowProps?: any; | |||
cellProps?: any; | |||
responsive?: boolean; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ This was just used somewhere, and I honestly have no idea how this didn't fail in the current TS .
Object.keys(IndexGroup).forEach(typeKey => { | ||
const consumerType = IndexGroup[typeKey as any] as IndexGroup; | ||
|
||
Object.entries(IndexGroup).forEach(([typeKey, consumerType]) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ℹ️ The as any
typing complained, that any
is not a valid key to the IndexGroup
enum. So I actually just used the entries
method here, which a/ looks nicer and b/ is perfectly type safe now.
Jenkins, test this - CI failed to report |
💚 Build Succeeded |
@elasticmachine merge upstream |
💚 Build Succeeded |
Ignoring CODEOWNERS review since it only changing very minor typings in their files. |
Summary
This PR addresses a couple of TS issues, that will break once upgraded to TS 3.7.0. This PR mostly contains smaller changes not really effecting any specific plugin a lot, so I randomly select a couple of TS experts for review here.
For QA: This PR does not contain any functional changes.