From c35dadb0cbf97a751d5bee650a4189e7005b590a Mon Sep 17 00:00:00 2001 From: Aleksandar Djindjic Date: Thu, 9 Mar 2023 01:47:14 +0100 Subject: [PATCH] Improved typings (#3302) * Improved typings Passing this first param to `CoreSetup` generic would set a proper type to `depsStart` returned from `core.getStartServices()` Signed-off-by: Aleksandar Djindjic * Nit - rename example deps prop Signed-off-by: Josh Romero --------- Signed-off-by: Aleksandar Djindjic Signed-off-by: Josh Romero Co-authored-by: Josh Romero Co-authored-by: Miki --- src/core/CONVENTIONS.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/CONVENTIONS.md b/src/core/CONVENTIONS.md index 5d24b54d9920..7c3de41e5751 100644 --- a/src/core/CONVENTIONS.md +++ b/src/core/CONVENTIONS.md @@ -171,7 +171,7 @@ import { MyAppRoot } from './components/app.ts'; */ export const renderApp = ( core: CoreStart, - deps: MyPluginDepsStart, + deps: MyPluginStartDeps, { element, history }: AppMountParameters ) => { ReactDOM.render(, element); @@ -182,10 +182,10 @@ export const renderApp = ( ```ts // my_plugin/public/plugin.ts -import { Plugin } from '../../src/core/public'; +import { Plugin, CoreSetup } from '../../src/core/public'; export class MyPlugin implements Plugin { - public setup(core) { + public setup(core: CoreSetup) { core.application.register({ id: 'my-app', async mount(params) { @@ -200,14 +200,14 @@ export class MyPlugin implements Plugin { } ``` -Prefer the pattern shown above, using `core.getStartServices()`, rather than store local references retrieved from `start`. +Prefer the pattern shown above, using `core.getStartServices()`, rather than store local references retrieved from `start`. **Bad:** ```ts export class MyPlugin implements Plugin { // Anti pattern private coreStart?: CoreStart; - private depsStart?: DepsStart; + private depsStart?: DepsStart; public setup(core) { core.application.register({ @@ -218,7 +218,7 @@ export class MyPlugin implements Plugin { return renderApp(this.coreStart, this.depsStart, params); } }); - } + } public start(core, deps) { // Anti pattern @@ -359,5 +359,5 @@ Migration example from the legacy format is available in `src/core/MIGRATION_EXA ### Naming conventions -Export start and setup contracts as `MyPluginStart` and `MyPluginSetup`. +Export start and setup contracts as `MyPluginStart` and `MyPluginSetup`. This avoids naming clashes, if everyone exported them simply as `Start` and `Setup`.