From 611f9afd2d6bbd4f0970dddc2d3a134e5d0d610f Mon Sep 17 00:00:00 2001 From: Li Zhen Date: Thu, 18 Oct 2018 02:00:23 +0800 Subject: [PATCH] Add new @types/kos-core package (#29800) * Add new @types/kos-core package * Fit to lint format * Fix for Travis CI * Fixed interface prefix rules for Travis CI * Remove redundency tslint config. * Remove redundency tslint config. * Rename 'Kos' to 'KOS' * Add type control * Update comment * Fixed wrong dt-header * Remove patch version in dt-header --- types/kos-core/index.d.ts | 64 ++++++++++++++++++++++++++++++++ types/kos-core/kos-core-tests.ts | 6 +++ types/kos-core/tsconfig.json | 23 ++++++++++++ types/kos-core/tslint.json | 3 ++ 4 files changed, 96 insertions(+) create mode 100644 types/kos-core/index.d.ts create mode 100644 types/kos-core/kos-core-tests.ts create mode 100644 types/kos-core/tsconfig.json create mode 100644 types/kos-core/tslint.json diff --git a/types/kos-core/index.d.ts b/types/kos-core/index.d.ts new file mode 100644 index 0000000000..061c3c98f6 --- /dev/null +++ b/types/kos-core/index.d.ts @@ -0,0 +1,64 @@ +// Type definitions for kos-core 0.3 +// Project: https://github.com/ali-Kos/Kos +// Definitions by: alibaba ali-Kos +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.8 +import * as React from 'react'; + +type ReactComponent

= React.ComponentClass; + +interface Util { + getActionType: (action: string) => { namespace: string | null; type: string }; +} + +interface WrapperConfig { + model: KosModel; + autoLoad?: boolean; + autoReset?: boolean; + namespace?: string; +} + +interface Action { + type: string; + payload?: Partial; +} + +export interface KosProps { + dispatch?: (action: Action) => void; + getParam?: () => string; + getNamespace?: () => string; +} + +export type KosDispatch = (action: Action) => void; + +export type GetKosState = () => T; + +export interface KosModel { + namespace: string; + initial: T; + reducers: { + [key: string]: (state: T, { payload }: { payload: T }) => void; + }; + asyncs: { + [key: string]: (dispatch: KosDispatch, getState?: GetKosState) => void; + }; + setup?: (dispatch: KosDispatch, getState: GetKosState) => void; + getAsync?: ( + key: string + ) => (dispatch: KosDispatch, getState?: GetKosState) => void; +} + +interface Kos { + Util: Util; + registeModel: (model: any) => void; + removeModel: (namespace: string) => void; + getModel: (namespace: string) => KosModel; + use: (middleware: (api: { dispatch: any; getState: any }) => void) => void; + Wrapper: ( + config: WrapperConfig + ) => (component: ReactComponent) => any; + start: (Layout: ReactComponent, container?: string) => void; +} + +declare let KOS: Kos; +export default KOS; diff --git a/types/kos-core/kos-core-tests.ts b/types/kos-core/kos-core-tests.ts new file mode 100644 index 0000000000..e879236456 --- /dev/null +++ b/types/kos-core/kos-core-tests.ts @@ -0,0 +1,6 @@ +import KOS from 'kos-core'; + +type IReactComponent

= React.ComponentClass; +declare let RC: IReactComponent; + +KOS.start(RC, "#root"); diff --git a/types/kos-core/tsconfig.json b/types/kos-core/tsconfig.json new file mode 100644 index 0000000000..9c4ff911b3 --- /dev/null +++ b/types/kos-core/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "kos-core-tests.ts" + ] +} \ No newline at end of file diff --git a/types/kos-core/tslint.json b/types/kos-core/tslint.json new file mode 100644 index 0000000000..b4b47a0378 --- /dev/null +++ b/types/kos-core/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "dtslint/dt.json" +}